Android adb命令获取当前Activity或者Fragment

这篇具有很好参考价值的文章主要介绍了Android adb命令获取当前Activity或者Fragment。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

用adb命令查看下面Demo处于NO.3 Fragment时的ActivityFragment信息。
安卓获取当前activity工具,Android技术笔记,android,adb,android studio

查看当前Activity及其包名

adb shell "dumpsys window | grep mCurrentFocus"

输出结果如下:

mCurrentFocus=Window{b1deab4 u0 com.example.who/com.example.who.ui.activity.SecondActivity}

上面的com.example.who/com.example.who.ui.activity.SecondActivity}可以分成两部分看:/前的部分是包名,/后的部分是当前Activity的类全名。

查看全部窗口信息

adb shell dumpsys window windows |grep "Window #"

该命令会输出堆栈中全部的窗口信息。
输出结果如下,SecondActivity即为最上层的Activity

安卓获取当前activity工具,Android技术笔记,android,adb,android studio

查看当前Fragment

adb shell dumpsys activity your.package.name > yourPath\Fragment.txt
可以先通过adb shell "dumpsys window | grep mCurrentFocus"查询出应用包名,再执行上面的命令即可。

打开Fragment.txt,我们可以在开头看到如下内容:

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是当前Activityhashcode。我们搜索它在Fragment.txt中的位置,可以看到如下内容。

	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:

跳转到Local FragmentActivity cb4da6d State所在位置,然后继续往下看。可以看到Added Fragments。它列出了当前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}

如果在执行fragmentTransaction.commit();之前有执行addToBackStack方法,如下所示:

        fragmentTransaction.replace(R.id.container_fragment, mOneFragment, "OneFragmentTag");
        fragmentTransaction.addToBackStack("replaceOne");
        fragmentTransaction.commit();

那么我们还将看到Back StackBack Stack Indices,并从中看到回退栈的信息:文章来源地址https://www.toymoban.com/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}

到了这里,关于Android adb命令获取当前Activity或者Fragment的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Android】怎么使用一个ViewModel用在多个Activity或者Fragment中

    项目需求 在多个Activity或者Fragment中使用同一个ViewModel 需求实现 1.使用ActivityScope或FragmentScope 想在一个Activity或Fragment中共享ViewModel实例,可以使用ActivityScope或FragmentScope。这两种范围会根据它们所绑定的Activity或Fragment自动管理ViewModel实例的生命周期。 例如,创建一个继承自

    2024年02月15日
    浏览(32)
  • Android Activity和Fragment的对比

    参考来源 参考来源 参考来源 onAttach() 作用:fragment已经关联到activity,这个时候 activity已经传进来了, 获得activity的传递的值 就可以进行 与activity的通信里, 当然也可以使用getActivity(),前提是这个fragment已经和宿主的activity关联,并且没有脱离,有且只有调用一次。 onCreate(

    2024年02月11日
    浏览(40)
  • Android Fragment跳转到Activity的方法

    一开始我直接按照Activity页面之间跳转的方法进行的跳转,就是在xml文件中给相应的组件onClick 在网上查询到的好像都是下面这种 但是我在Fragment的Java文件中用到这个并不能实现预想的效果。 在多次尝试后我直接在Fragment所嵌入的Activity的Java文件中添加了以下代码,实现了跳

    2023年04月25日
    浏览(49)
  • Android 获取奔溃crash的日志(adb logcat或者dropbox)

    1.通过adb logcat 来获取 : 使用场景 :测试或者开发小伙伴 抓取。 先执行 adb logcat -c 清理缓存日志 接着,抓取当前时间段开始的日志: adb logcat -v time D:/crash.log 也可以抓取指定进程的日志: adb logcat -v time | find \\\"com.xxx\\\" D:/crash.log 其中 -v 和 time 是指log的v级别日志,也可用w 警告

    2024年02月08日
    浏览(44)
  • Android:单Activity多Fragment,Navigation实现Fragment跳转,Fragment之间通过ViewModel共享数据

    1、activity_main.xml 2、MainActivity FragmentA:包括SeekBar和一个按钮,点击button跳转到FragmentB FragmentB:SeekBar加一和减一操作的按钮,一个返回FragmentA的按钮,即经过加减操作以后,在FragmentA上显示加减的结果。 nav_graph.xml 1、fragment_home.xml 2、HomeFragment 1、fragment_detail.xml 2、DetailFragm

    2023年04月08日
    浏览(32)
  • Flutter 和 Android原生(Activity、Fragment)相互跳转、传参

    本文主要讲解 Flutter 和 Android原生之间,页面相互跳转、传参, 但其中用到了 两端相互通信 的知识, 非常建议 先看完这篇 讲解通信的文章 : Flutter 与 Android原生 相互通信:BasicMessageChannel、MethodChannel、EventChannel_flutter eventchannel methodchannel basemessagechan-CSDN博客 当前案例 Flu

    2024年02月22日
    浏览(32)
  • 使用ADB命令查询Android设备的安卓版本信息

    确保你已经安装了ADB并将其添加到系统的路径中。 连接你的Android设备到计算机,并确保启用了开发者选项和USB调试模式。你可以在设备的设置中找到这些选项。 打开终端(命令提示符或终端窗口)。 运行以下ADB命令来获取Android设备的安卓版本信息: 如果你希望获得更详细

    2024年02月08日
    浏览(35)
  • uniapp - [安卓|苹果]实现App端引入高德地图,详细获取当前用户手机定位、两个地点的路线规划及相关示例代码,uniapp安卓Android平台软件下使用高德地图,获取当前位置信息及规划路线

    在uniapp安卓app端 | 苹果app端开发中,详细完成APP端引入使用高德地图插件,提供可直接复制的示例,例如获取当前定位及取到当前城市位置信息,规划两个位置的路线(规划城市2个点的路线轨迹及在地图上显示)等示例。 新手跟着教程一步步来,轻松实现此功能。 首先,

    2024年02月22日
    浏览(63)
  • android通过adb命令获取boot.img镜像

    当前系统支持双分区,区a分区boot_a.img如下: 取boot.img 取出来后通过fastboot方式刷机: 参考博客:  Android手机如何提取系统内核(boot.img镜像文件提取)_Mintimate的博客-CSDN博客_安卓boot.img提取

    2024年02月13日
    浏览(32)
  • 使用adb命令获取Android SurfaceView 的 帧率(fps)jank,手机的基本信息

            adb shell dumpsys SurfaceFlinger | grep + 包名启动页 (不然他获取的数据是只有一行数据),这个命令只需要执行一次         使用的是adb shell dumpsys SurfaceFlinger --latency \\\"SurfaceView +包名/启动页\\\"获取的,目前只支持安卓6.0以上。         使用adb 命令时,可以根据他的

    2023年04月19日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包