Android : 如何得到Activities栈顶的Activity名称
2014-07-28 13:56
232 查看
Android : 如何得到Activities栈顶的Activity名称
Author : Aoyousatuo Zhao
http://blog.sina.com.cn/aoyousatuo
众所周知,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.
总的步骤是:
1. 得到当前运行环境(context)的Activity管理器;
2. 通过Activity管理器得到当前的任务栈信息;
3. 从任务栈中获得栈顶的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() ;
else
return
null ;
}
最后不要忘记在AndroidManifest.xml中增加权限:
<uses-permission
android:name = “android.permission.GET_TASKS”/>
Author : Aoyousatuo Zhao
http://blog.sina.com.cn/aoyousatuo
众所周知,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.
总的步骤是:
1. 得到当前运行环境(context)的Activity管理器;
2. 通过Activity管理器得到当前的任务栈信息;
3. 从任务栈中获得栈顶的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() ;
else
return
null ;
}
最后不要忘记在AndroidManifest.xml中增加权限:
<uses-permission
android:name = “android.permission.GET_TASKS”/>
相关文章推荐
- Android : 如何得到Activities栈顶的Activity名称
- Android : 如何得到Activities栈顶的Activity名称
- 如何得到Activities栈顶的Activity名称
- Android 如何在Activity中启动另一应用程序的方法,无需得到类名
- 如何在android环境下进行ttf解析,通过获取文件头信息得到字体名称!
- Android 如何在Activity中启动另一应用程序的方法,无需得到类名
- appium实践问题记录--如何获取android中应用的activity名称
- 如何查看Android应用apk的包名和入口Activity名称
- android 如何动态更新当前显示的Activity 的local
- Android源码学习之三-Activity是如何进行自动化测试的
- 如何让Android横竖屏切换时不销毁当前activity
- Android源码学习之一-Activity是如何实现主题变化的
- 如何得到指定虚拟目录名称的实际路径
- Android源码学习之一-Activity是如何实现主题变化的
- Android如何在Activity和Service之间传递数据
- Android中如何取得联系人,如何得到一个联系人下面的多个号码
- Android如何在Activity和Service之间传递数据
- 已知某个文件的全部路径,如d:\aa\bbb\ccc\0.jpg 如何得到0.jpg的父目录名称cc呢?
- Android源码学习之二-Activity如何管理对话框
- 如何通过窗体名称(字符串)来得到窗体的实例?