我正在寻找一种解决方案,以确定从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
获取前台应用程序包名称的方法可能不同,对于我来说是:
adb shell dumpsys activity recents | grep 'Recent #0' | cut -d= -f6 | sed 's| .*||' | cut -d '/' -f1 | cut -d: -f2
adb shell dumpsys window InputMethod | grep "mHasSurface"
命令获取软键盘的可见性。但是,通过简单测试,我无法获取键盘的内容(我比较了可见和不可见键盘的转储)。 - Juuso Ohtonen