3

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

4

5 回答 5

3

您可以使用 adb 。

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

于 2021-07-28T07:39:32.823 回答
3

使用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()识别哪个活动。

于 2016-06-22T06:31:41.310 回答
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()在任何您需要的覆盖方法中使用。

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

于 2017-08-24T12:26:36.893 回答
0

简单的 -

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

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

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

于 2016-06-22T06:31:03.040 回答
0

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

于 2016-06-22T06:36:46.380 回答