在 android dumpsys 中获取当前可见片段的信息

Posted

技术标签:

【中文标题】在 android dumpsys 中获取当前可见片段的信息【英文标题】:Get info of current visible fragment(s) in android dumpsys 【发布时间】:2014-08-17 05:15:58 【问题描述】:

我正在寻找一种解决方案来确定当前可以从 dumpsys 中看到哪些片段

我可以获得有关活动的信息

$ adb shell dumpsys activity | grep -i run

是否有任何碎片解决方案或如何从 dumpsys 中确定可见碎片?

【问题讨论】:

【参考方案1】:

使用 adb shell dumpsys activity -h 检查文档。您可以提供 参数 adb shell dumpsys activity <COMP_SPEC>。当您提供 参数时,您将获得有关特定组件的更多信息,包括可见片段和视图。

android 设备设置显示示例:

$ adb shell dumpsys activity com.android.settings

在我的设备上,命令输出包含:

...
Active Fragments in 13c3a270:
  #0: DashboardSummary186a79e9 #0 id=0x7f0e017b
    mFragmentId=#7f0e017b mContainerId=#7f0e017b mTag=null
    mState=5 mIndex=0 mWho=android:fragment:0 mBackStackNesting=0
    mAdded=true mRemoving=false mResumed=true mFromLayout=false mInLayout=false
    mHidden=false mDetached=false mMenuVisible=true mHasMenu=false
    mRetainInstance=false mRetaining=false mUserVisibleHint=true
    mFragmentManager=FragmentManager13c3a270 in Settingsef6d7d6
    mActivity=com.android.settings.Settings@ef6d7d6
    mContainer=android.widget.FrameLayout9b1166e V.E..... ........ 0,0-768,1022 #7f0e017b app:id/main_content
    mView=android.widget.ScrollView1c50410f VFED.V.. ........ 0,0-768,1022 #7f0e005a app:id/dashboard
    Child FragmentManager2298759c in DashboardSummary186a79e9:
      FragmentManager misc state:
        mActivity=com.android.settings.Settings@ef6d7d6
        mContainer=android.app.Fragment$1@167cba5
        mParent=DashboardSummary186a79e9 #0 id=0x7f0e017b
        mCurState=5 mStateSaved=false mDestroyed=false
...

【讨论】:

是否可以获得作为软键盘内容的可见片段?喜欢打开一个有输入字段的应用,单击它并获取每个按钮/字母、建议字段等的列表或片段? @Nicofisi 您可以通过adb shell dumpsys window InputMethod | grep "mHasSurface" ***.com/a/25781978/1097104 获得软键盘的可见性但是,通过简短的测试,我无法获得键盘的内容(我区分了键盘可见的转储和不可见)。 @Nicofisi 请就您的问题发布一个新问题以获得更多可见性(也许是真正的答案)。 谢谢,很有帮助! Android Studio 中有什么东西可以帮助可视化输出吗? @vir 我们也许是这个? discuss.appium.io/t/…【参考方案2】:

这将显示您的活动和片段的实时视图:

watch -n 1 "adb shell dumpsys activity top | grep -E 'Fragment|Activity' | head -60"

【讨论】:

【参考方案3】:
adb shell dumpsys activity $package_name_of_foreground_app | grep Fragment

获取 package_name_of_foreground_app 的方式可能不同,对我来说是:

adb shell dumpsys activity recents | grep 'Recent #0' | cut -d= -f6 | sed 's| .*||' | cut -d '/' -f1 | cut -d: -f2

【讨论】:

以上是关于在 android dumpsys 中获取当前可见片段的信息的主要内容,如果未能解决你的问题,请参考以下文章

Android dumpsys 命令

adb shell dumpsys 命令

Android中AM、PM、dumpsys命令使用总结

获取当前可见的Android Fragment

在android中查询“dumpsys meminfo”

Android dumpsys meminfo 流程分析