Java 如何在调试应用程序时检查当前正在运行的活动
我被别人开发的项目困住了。这是一个非常大的应用程序。因此,为了理解代码,我想知道流程,基本上是活动的名称(代码中的java文件),它当前正在我的手机上运行。我可以在所有活动中设置断点,但还有其他方法吗?简单- 在每个activity override onStart()方法中,按如下方式打印日志-Java 如何在调试应用程序时检查当前正在运行的活动,java,android,android-studio,android-debugging,Java,Android,Android Studio,Android Debugging,我被别人开发的项目困住了。这是一个非常大的应用程序。因此,为了理解代码,我想知道流程,基本上是活动的名称(代码中的java文件),它当前正在我的手机上运行。我可以在所有活动中设置断点,但还有其他方法吗?简单- 在每个activity override onStart()方法中,按如下方式打印日志- @Override protected void onStart() { super.onStart(); Log.d("TAG -> ", "Y
@Override
protected void onStart() {
super.onStart();
Log.d("TAG -> ", "YOUR_ACTIVITY_NAME");
}
当设备中的活动开始时,它将在logcat中打印日志。希望这会有帮助 使用,您不需要为所有活动添加处理。注册一次,它适用于所有活动,就是这样
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()来识别哪个活动,找出启动活动并找出使用的方法和变量。。您可以使用“查找用法”(Ctrl+G)。如果您的应用程序扩展了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()
这就是你所需要的。调试愉快:)run
adb shell dumpsys activity top
这对我不起作用。我的应用程序类扩展了MultiDexApplication,是因为这个吗?你不必这样扩展你的应用程序类。您可以使用:getApplication().registerActivityLifecycleCallbacks(mCallbacks),另请参见,注意该代码段只是一个示例,您可以轻松地适应其他用例!!!