我正在寻找一种解决方案来确定当前可以从 dumpsys 中看到哪些片段
我可以获得有关活动的信息
$ adb shell dumpsys activity | grep -i run
是否有任何碎片解决方案,或者您如何确定来自 dumpsys 的可见碎片?
使用 . 检查文档adb shell dumpsys activity -h
。您可以提供 <COMP_SPEC> 参数adb shell dumpsys activity <COMP_SPEC>
。当您提供 <COMP_SPEC> 参数时,您将获得有关特定组件的更多信息,包括可见片段和视图。
显示 Android 设备设置时的示例:
$ adb shell dumpsys activity com.android.settings
在我的设备上,命令输出包含:
... Active Fragments in 13c3a270: #0: DashboardSummary{186a79e9 #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=FragmentManager{13c3a270 in Settings{ef6d7d6}} mActivity=com.android.settings.Settings@ef6d7d6 mContainer=android.widget.FrameLayout{9b1166e V.E..... ........ 0,0-768,1022 #7f0e017b app:id/main_content} mView=android.widget.ScrollView{1c50410f VFED.V.. ........ 0,0-768,1022 #7f0e005a app:id/dashboard} Child FragmentManager{2298759c in DashboardSummary{186a79e9}}: FragmentManager misc state: mActivity=com.android.settings.Settings@ef6d7d6 mContainer=android.app.Fragment$1@167cba5 mParent=DashboardSummary{186a79e9 #0 id=0x7f0e017b} mCurState=5 mStateSaved=false mDestroyed=false ...
这将显示您的活动和片段的实时视图:
watch -n 1 "adb shell dumpsys activity top | grep -E 'Fragment|Activity' | head -60"
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