用adb命令查看下面Demo處于NO.3 Fragment
時的Activity
和Fragment
信息。
查看當(dāng)前Activity及其包名
adb shell "dumpsys window | grep mCurrentFocus"
輸出結(jié)果如下:
mCurrentFocus=Window{b1deab4 u0 com.example.who/com.example.who.ui.activity.SecondActivity}
上面的com.example.who/com.example.who.ui.activity.SecondActivity}
可以分成兩部分看:/
前的部分是包名,/
后的部分是當(dāng)前Activity
的類全名。
查看全部窗口信息
adb shell dumpsys window windows |grep "Window #"
該命令會輸出堆棧中全部的窗口信息。
輸出結(jié)果如下,SecondActivity
即為最上層的Activity
:
查看當(dāng)前Fragment
adb shell dumpsys activity your.package.name > yourPath\Fragment.txt
可以先通過adb shell "dumpsys window | grep mCurrentFocus"
查詢出應(yīng)用包名,再執(zhí)行上面的命令即可。
打開Fragment.txt
,我們可以在開頭看到如下內(nèi)容:
TASK com.example.who id=655 userId=0
ACTIVITY com.example.who/.ui.activity.SecondActivity 49341c pid=4339
Local Activity cb4da6d State:
mResumed=true mStopped=false mFinished=false
其中cb4da6d
是當(dāng)前Activity
的hashcode
。我們搜索它在Fragment.txt
中的位置,可以看到如下內(nèi)容。
Line 3: Local Activity cb4da6d State:
Line 81: context: com.example.who.ui.activity.SecondActivity@cb4da6d
Line 82: client: com.example.who.ui.activity.SecondActivity@cb4da6d (android.os.BinderProxy@292ac31)
Line 105: Local FragmentActivity cb4da6d State:
跳轉(zhuǎn)到Local FragmentActivity cb4da6d State
所在位置,然后繼續(xù)往下看??梢钥吹?code>Added Fragments。它列出了當(dāng)前Fragment堆棧中的全部Fragment。
如果Demo第二頁切換Fragment時使用add方法:
fragmentTransaction.add(R.id.container_fragment, mOneFragment, "OneFragmentTag");
fragmentTransaction.add(R.id.container_fragment, mTwoFragment, "TwoFragmentTag");
fragmentTransaction.add(R.id.container_fragment, mThreeFragment, "ThreeFragmentTag");
可以看到Added Fragments
如下:
Added Fragments:
#0: OneFragment{c7ccdff (3e703195-7911-4c26-a36f-f14ee357c797) id=0x7f070055 OneFragmentTag}
#1: TwoFragment{24e01a0 (b71c641a-6bf6-44d2-b01d-62f2c618136a) id=0x7f070055 TwoFragmentTag}
#2: ThreeFragment{231b634 (d81580b3-ece9-48f7-b697-54f01c52a782) id=0x7f070055 ThreeFragmentTag}
如果Demo第二頁切換Fragment時使用replace方法:
fragmentTransaction.replace(R.id.container_fragment, mOneFragment, "OneFragmentTag");
fragmentTransaction.replace(R.id.container_fragment, mTwoFragment, "TwoFragmentTag");
fragmentTransaction.replace(R.id.container_fragment, mThreeFragment, "ThreeFragmentTag");
可以看到Added Fragments
如下:
Added Fragments:
#0: ThreeFragment{6e72f21 (f6e3fc39-c6e1-43ab-8914-a56c85425092) id=0x7f070055 ThreeFragmentTag}
如果在執(zhí)行fragmentTransaction.commit();
之前有執(zhí)行addToBackStack
方法,如下所示:文章來源:http://www.zghlxwxcb.cn/news/detail-554626.html
fragmentTransaction.replace(R.id.container_fragment, mOneFragment, "OneFragmentTag");
fragmentTransaction.addToBackStack("replaceOne");
fragmentTransaction.commit();
那么我們還將看到Back Stack
和Back Stack Indices
,并從中看到回退棧的信息:文章來源地址http://www.zghlxwxcb.cn/news/detail-554626.html
Back Stack:
#0: BackStackEntry{ce9e8a6 #0 replaceOne}
mName=replaceOne mIndex=0 mCommitted=true
Operations:
Op #0: ADD OneFragment{3208bfc (09d07dcf-16fb-4e3d-84f2-87edc2de520d) id=0x7f070055 OneFragmentTag}
#1: BackStackEntry{aded2e7 #1 replaceTwo}
mName=replaceTwo mIndex=1 mCommitted=true
Operations:
Op #0: REMOVE OneFragment{3208bfc (09d07dcf-16fb-4e3d-84f2-87edc2de520d) id=0x7f070055 OneFragmentTag}
Op #1: ADD TwoFragment{5fd0293 (5f60c66a-1171-4c6a-bbca-d43abb76bd02) id=0x7f070055 TwoFragmentTag}
#2: BackStackEntry{acc5e94 #2 replaceThree}
mName=replaceThree mIndex=2 mCommitted=true
Operations:
Op #0: REMOVE TwoFragment{5fd0293 (5f60c66a-1171-4c6a-bbca-d43abb76bd02) id=0x7f070055 TwoFragmentTag}
Op #1: ADD ThreeFragment{de0310b (efd3eb6b-1e6a-466f-bb87-f039024911cd) id=0x7f070055 ThreeFragmentTag}
Back Stack Indices:
#0: BackStackEntry{ce9e8a6 #0 replaceOne}
#1: BackStackEntry{aded2e7 #1 replaceTwo}
#2: BackStackEntry{acc5e94 #2 replaceThree}
到了這里,關(guān)于Android adb命令獲取當(dāng)前Activity或者Fragment的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!