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