如何在调试应用程序时检查当前正在运行的活动

时间:2016-06-22 06:25:29

标签: java android android-studio android-debugging

我被其他人开发的项目困住了。它是一个非常大的应用程序因此,为了理解代码我想知道流程,基本上是我手机上当前运行的活动名称(代码中的java文件)。我可以在所有活动中设置断点,但还有其他方法吗?

5 个答案:

答案 0 :(得分:2)

使用ActivityLifecycleCallbacks,您无需为所有活动添加处理。注册一次,它适用于所有活动,就是这样!

public class MyApplication extends Application implements
   ActivityLifecycleCallbacks{

@Override
public void onCreate() {
    super.onCreate();           
}

@Override
public void onActivityStopped(Activity activity) {
    Log.i("Tracking Activity Stopped", activity.getLocalClassName());

}

@Override
public void onActivityStarted(Activity activity) {
    Log.i("Tracking Activity Started", activity.getLocalClassName());

}

@Override
public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
    Log.i("Tracking Activity SaveInstanceState", activity.getLocalClassName());
}

@Override
public void onActivityResumed(Activity activity) {
    Log.i("Tracking Activity Resumed", activity.getLocalClassName());
}

@Override
public void onActivityPaused(Activity activity) {
    Log.i("Tracking Activity Paused", activity.getLocalClassName());
}

@Override
public void onActivityDestroyed(Activity activity) {
    Log.i("Tracking Activity Destroyed", activity.getLocalClassName());
}

@Override
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
    Log.i("Tracking Activity Created", activity.getLocalClassName());
    }
}

请注意,您可以通过 activity.getLocalClassName()来识别哪项活动。

答案 1 :(得分:1)

你可以使用 adb。

在您的终端中运行 adb shell dumpsys activity top

答案 2 :(得分:0)

简单 -

在每个活动中覆盖onStart()方法并打印这样的日志 -

    @Override
    protected void onStart() {
        super.onStart();
        Log.d("TAG -> ", "YOUR_ACTIVITY_NAME");
    }

当您的设备启动活动时,它将在logcat中打印日志。希望它会有所帮助!

答案 3 :(得分:0)

从清单中找出启动活动并查找使用的方法和变量..你可以使用“查找用法”(Ctrl + G)。

答案 4 :(得分:0)

如果您的应用程序扩展了MultiDexApplication类,那么这是一个可行的解决方案。

在扩展 MultiDexApplication 的应用程序类的 onCreate()方法中添加以下行以注册回调。

@Override
public void onCreate() {
    super.onCreate();
    registerActivityLifecycleCallbacks(new MyActivityLifecycleCallbacks());
} 

现在创建一个实现 ActivityLifecycleCallbacks 的内部类,如下所示

private static final class MyActivityLifecycleCallbacks implements ActivityLifecycleCallbacks {
        public void onActivityCreated(Activity activity, Bundle bundle) {
            Log.v("Application","Created");
        }
        public void onActivityDestroyed(Activity activity) {
            Log.v("Application","Destroyed");
        }
        public void onActivityPaused(Activity activity) {
            Log.v("Application","Paused");

        }
        public void onActivityResumed(Activity activity) {
            Log.v("Application","Resumed");


        }
        public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
            Log.v("Application","onActivitySaveInstanceState");
        }
        public void onActivityStarted(Activity activity) {
            Log.v("Application","Started");
        }
        public void onActivityStopped(Activity activity) {
            Log.v("Application","Stopped");
        }
    }

现在,您可以在所需的任何重写方法中使用activity.getLocalClassName()

这就是你所需要的一切。快乐调试:)

相关问题