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

Isj*_*Isj 5 java android android-studio android-debugging

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

Ter*_*rry 8

您可以使用 adb 来实现。

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


Dav*_*vid 5

使用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());
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意,您可以通过Activity.getLocalClassName()识别哪个活动。


Onk*_*ene 0

简单的 -

在每个活动中重写 onStart() 方法并打印日志,如下所示 -

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

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