代码之家  ›  专栏  ›  技术社区  ›  Piepants

是否可以卸载/检查后堆叠?

  •  1
  • Piepants  · 技术社区  · 10 年前

    出于调试目的,我希望能够在后台堆栈中记录活动,但我没有看到任何API可以这样做,也没有看到在搜索时提到它。有没有办法做到这一点?

    3 回复  |  直到 10 年前
        1
  •  2
  •   Felipe Loredo    10 年前

    将此代码放入MainActivity的onCreate中

    getSupportFragmentManager().addOnBackStackChangedListener(
                new FragmentManager.OnBackStackChangedListener() {
                    public void onBackStackChanged() {
                        for (int i = 0; i < getSupportFragmentManager().getBackStackEntryCount(); i++)
                            System.out.println(getSupportFragmentManager().getBackStackEntryAt(i).getName());
                    }
                });
    

    打印的名称是在调用addToBackStack时定义的:

    ...    
    FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
    ...
    ft.addToBackStack(name);
    ...
    

    您可以在logcat中看到输出。

        2
  •  1
  •   Community CDub    4 年前

    事实上,我也很赞同这个问题。不幸的是没有。让我们想想为什么?

    Java掌握在我们手中:

    1) Annotations -与DI的方式。(反射方式)像 ButterKnife
    2) 登录后台的父类。

    public class MainActivity extends LogActivity //for ex
    

    3) 具有 Thread.currentThread().getStackTrace() 但是你应该检查你现在呆在哪里,你现在检查的线程是什么,以及其他例行工作。

    参考链接 here , here here .

        3
  •  1
  •   Wirling    5 年前

    可以使用以下命令 adb shell dumpsys activity 它将打印很多内容,包括开头的后堆栈:

    Running activities (most recent first):
      TaskRecord{45168b4 #2194 A=com.example.myapp U=0 StackId=22 sz=3}
        Run #2: ActivityRecord{a05a1af u0 com.example.myapp/com.example.myapp.activity.MyActivity t2194}
        Run #1: ActivityRecord{5c017cd u0 com.example.myapp/com.example.myapp.activity.MySecondActivity t2194}
        Run #0: ActivityRecord{6fe38b2 u0 com.example.myapp/com.example.myapp.activity.MyThirdActivity t2194}
    

    另一种解决方案是第一种 adb shell 然后按enter,后跟 dumpsys activity | grep -i run 。这将只显示后堆栈而不显示其他内容,但需要两个命令。