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