文档章节

Android : 如何得到Activities栈顶的Activity名称

欧吧在线
 欧吧在线
发布于 2015/02/28 09:16
字数 556
阅读 79
收藏 0

#程序员薪资揭榜#你做程序员几年了?月薪多少?发量还在么?>>>

众所周知,Android中的任务等等都是通过栈来管理的,Activities的管理也不例外。栈这种数据结构是大家再熟悉不过了。它的先进后出特性让Android可以很容易实现从当前Activity回到或者重新启动先前的Activity.(:当系统资源匮乏的时候,系统会释放先前Activity占用资源,因此当从当前Activity返回先前的Activity的时候,先前的Activity会被重新创建)

简单的说,回到先前的Activity本质就是删除当前的Activity,让先前的Activity变成Activities栈的栈顶。可以这么说,当前运行的活动的Activity就是Activities栈顶的那个Activity.

在实际的开发中,我们有时候需要得到当前Activities栈顶Activity,以便实现一些功能,例如Debug的时候用来监测Activity返回的状态是否正确。举例,笔者在开发中由于开发机制的原因,导致在某个Activity UIHome键,然后重新进入应用的时候状态错误。笔者始终检查不到原因,只好在重新进入应用的时候监视当前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”/>

 

 

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(); //包名


本文转载自网络

欧吧在线
粉丝 0
博文 32
码字总数 4007
作品 0
沈阳
私信 提问
加载中

评论(0)

Activity的LaunchMode和taskAffinity

做项目到现在都一直没有理解LaunchMode有什么用,或许根本就没真正花心思去看,所以今天把这部分整理下。 设置Activity的LaunchMode属性可以决定这个Activity是和当前Task保持关联,还是说每...

steve.ming
2012/04/26
2.5K
3
一篇文章搞懂 Activity 启动模式

本文大部分翻译自 《Android “launchMode” (Visualized)》, 并结合自己的理解在 中添加了补充内容 是很重要的一块知识点,每位安卓开发都应该了解它是如何运作的。大部分的开发者(包括我自...

骑摩托马斯
2019/02/22
0
0
【Android】任务和返回栈(tasks and back stack)

tasks and back stack 一个Task 就是一组activity的集合。这些activity按照它们打开的顺序被放置于一个先进后出的栈中(back stack)。 用户点击图标打开一个app时,该app的task会被移到前台...

wilsonchan
2012/11/28
9.6K
4
【译】使用 Google TWA 技术将 PWA 打包成 Android App

原文地址:developers.google.com/web/updates… 原文标题:Using Trusted Web Activities 译者:谢盼 校对者:张卓 Trusted Web Activities 是集成 Web 应用的新方法,你可以通过基于 Cust...

阅文前端团队
2019/06/03
0
0
Android启动模式-精华篇

支持原文:http://tryenough.com/android-launch-mode Activity的四种启动模式如下: standard、singleTop、singleTask、singleInstance standard-默认模式 1.谁启动了该模式的Activity,该A...

TryEnough
2019/03/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

PDF如何添加下划线?迅捷PDF编辑器一键添加

“在PDF文件中如何添加下划线?”最近,很多办公室小伙伴都向小编咨询这样一个问题。我们常常需要接触、使用到PDF文件,通过查看、阅读、编辑PDF文件以处理各种各样的学习、工作任务。当我们...

dawda
37分钟前
46
0
go中gin框架+realize实现边写代码边编译,热更新

最近看到了热加载,相关的,就搜索了goland实现热加载 发现了一个插件realize https://github.com/oxequa/realize 然后,为了自己撸代码更方便,配合gin写个教程 1.准备 go get github.com/...

osc_ho8dcqsx
37分钟前
27
0
CAP理论的理解

转自:https://www.cnblogs.com/mingorun/p/11025538.html CAP理论的理解 CAP理论作为分布式系统的基础理论,它描述的是一个分布式系统在以下三个特性中: 一致性(Consistency) 可用性(Ava...

osc_5rgbamh9
38分钟前
43
0
求所有科目都大于80分的学生姓名

   蠢蠢的我=》 select t1.name from ( select name,count(*) as num from table t where fenshu>80 group by name) t1join( select name,count(kecheng) as num from table group ......

osc_gk4myeyk
40分钟前
36
0
Memcache(1.1)Memcache 基本概述与架构概述

【1】基本概念介绍 官网:https://memcached.org/ 【1.1】memcache与memcached memcache:是早期使用的,与php结合的,是Php中常用的一个原生插件,完全在php框架内开发的 memcached:是建立...

osc_7ie26pzn
41分钟前
15
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部