如何得到Activities栈顶的Activity名称
来源:互联网 发布:淘宝上面做销售怎么做 编辑:程序博客网 时间:2024/06/05 13:24
众所周知,Android中的任务等等都是通过栈来管理的,Activities的管理也不例外。栈这种数据结构是大家再熟悉不过了。它的先进后出特性让Android可以很容易实现从当前Activity回到或者重新启动先前的Activity.(注:当系统资源匮乏的时候,系统会释放先前Activity占用资源,因此当从当前Activity返回先前的Activity的时候,先前的Activity会被重新创建)
简单的说,回到先前的Activity本质就是删除当前的Activity,让先前的Activity变成Activities栈的栈顶。可以这么说,当前运行的活动的Activity就是Activities栈顶的那个Activity.
在实际的开发中,我们有时候需要得到当前Activities栈顶的Activity, 以便实现一些功能,例如Debug的时候用来监测Activity返回的状态是否正确。举例,笔者在开发中由于开发机制的原因,导致在某个Activity UI按Home键,然后重新进入应用的时候状态错误。笔者始终检查不到原因,只好在重新进入应用的时候监视当前Activities栈的栈顶的Activity,从而得出结论,是开发机制导致Activities栈出现错乱,即栈顶Activity错误导致从home重新进入应用后Android resume了错误的Activity.
以上啰嗦了一堆,读者如果没有兴趣可以跳过。下面我就介绍一下如何获得当前栈顶的Activity.
总的步骤是:
得到当前运行环境(context)的Activity管理器;
通过Activity管理器得到当前的任务栈信息;
从任务栈中获得栈顶的Activity的名称。
具体读者可以参看下面的代码和Android帮助文档。
代码举例 :
String getTopActivity(Activity context){ActivityManager manager = (ActivityManager)context.getSystemService(ACTIVITY_SERVICE) ;List<RunningTaskInfo> runningTaskInfos = manager.getRunningTasks(1) ;if(runningTaskInfos != null)return (runningTaskInfos.get(0).topActivity).toString() ;elsereturn null ;}最后不要忘记在AndroidManifest.xml中增加权限:<uses-permission android:name = “android.permission.GET_TASKS”/>ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); RunningTaskInfo info = manager.getRunningTasks(1).get(0); String shortClassName = info.topActivity.getShortClassName(); //类名 String className = info.topActivity.getClassName(); //完整类名 String packageName = info.topActivity.getPackageName(); //包名
Author : Aoyousatuo Zhao
http://blog.sina.com.cn/aoyousatuo
- Android : 如何得到Activities栈顶的Activity名称
- Android : 如何得到Activities栈顶的Activity名称
- 如何得到Activities栈顶的Activity名称
- 查看app栈顶Activity名称
- 74获取任务栈顶的Activity
- Android获取栈顶的activity
- 获取当前栈顶的Activity
- 在Activity启动过程中如何任务栈的栈顶是否是将要启动的Activity的实例
- 如何得到当前所在的sql的数据库名称
- 如何得到客户机、服务器的名称和IP地址
- 如何得到文件夹下所有的子文件夹名称
- 如何得到客户机、服务器的名称和IP地址
- 如何得到指定虚拟目录名称的实际路径
- 判断当前的Activity的是否处于栈顶
- 检测Activity是否在当前Task的栈顶
- 检测Activity是否在当前Task的栈顶
- 检测Activity是否在当前Task的栈顶
- 安卓5.0获取当前应用的栈顶Activity
- 一个Bootstrap的例子--关于validate
- DDA应用实践-冈萨雷斯《数字图像处理》
- Android 自定义控件 轻松实现360软件详情页
- 广师Android群分享之网络
- Codeforces Round #321 (Div. 2)(A)模拟
- 如何得到Activities栈顶的Activity名称
- 数据挖掘之中文本的表示模型
- 大数据时代,我们应该具有怎样的思维方式?
- 【小镇的技术天梯】Linux内核学习,物理内存
- 广师Android群分享之程序员的鸡汤文章
- Android 打造形形色色的进度条 实现可以如此简单
- linux下如何启动svn教程
- Codeforces Round #321 (Div. 2)(B)尺取+前缀和
- PopupWindow的基本操作