获取activity栈的最顶端的一个
2016-01-20 14:08
197 查看
用过ActivityManager的童鞋估计都知道,可以从ActivityManager里面可以获取到当前运行的所有任务,所有进程和所有服务,这是任务管理器的核心。
那么,从里面我们可以发掘点什么出来吗?
仔细看getRunningTasks的文档,里面说获取的是系统中"running"的所有task,"running"状态包括已经被系统冻结的task。而且返回的这个列表是按照顺序排列的,也就是说第一个肯定比第二个后运行。
getRunningTasks有个整型参数,表示返回列表的最大个数。那么,我们如果把1作为参数给进去,那么他返回的task就是当前运行的那个task,然后从task中获取到最顶层的activity,这个activity就是当前显示给用户的那个activity了。
Java代码
ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
ComponentName cn = am.getRunningTasks(1).get(0).topActivity;
Log.d("", "pkg:"+cn.getPackageName());
Log.d("", "cls:"+cn.getClassName());
至于这个能做什么,嘿嘿,我相信你知道的。
那么,从里面我们可以发掘点什么出来吗?
仔细看getRunningTasks的文档,里面说获取的是系统中"running"的所有task,"running"状态包括已经被系统冻结的task。而且返回的这个列表是按照顺序排列的,也就是说第一个肯定比第二个后运行。
getRunningTasks有个整型参数,表示返回列表的最大个数。那么,我们如果把1作为参数给进去,那么他返回的task就是当前运行的那个task,然后从task中获取到最顶层的activity,这个activity就是当前显示给用户的那个activity了。
Java代码
ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
ComponentName cn = am.getRunningTasks(1).get(0).topActivity;
Log.d("", "pkg:"+cn.getPackageName());
Log.d("", "cls:"+cn.getClassName());
至于这个能做什么,嘿嘿,我相信你知道的。
相关文章推荐
- AES_ENCRYPT() AES_DECRYPT()
- 解决AndroidStudio添加ProjectLibary后在编译时遇到的各种问题之解决方式索引(finished with non-zero exit va
- 使用VMWare的nat连接实现zabbix虚拟机与主机IP共享
- Android 底部导航栏界面(Fragment)
- WPF学习资源整理
- LeetCode Bulb Switcher 319
- Win10系统怎么锁屏才能让别人找不到登陆界面?
- opentsdb源码分析---Deferred
- Socket开发之通讯协议及处理(解决粘包问题)
- 浅析@synthesize与@dynamic的最本质区别
- 2016年初Android开源项目总结
- Lua 字符串操作
- 心得
- Java语言中String 、StringBuffer 、StringBuilder的区别
- whuoj1574 第K小数
- bzoj3781 小B的询问【莫队】
- Git命令详解
- android开源项目汇总
- iOS语法小结---豁然开朗
- ssh提示输入密码回显