Android Tasks、ActivityStack和Activity

最近又在开展一些Android的开发工作,出现了在个别场景下发生的Activity切换不符合预期的情况,于是来温习一下Android的Tasks、ActivityStack、Activity,以及影响到他们的几个重要参数launchMode、taskAffinity、IntentFlags

 

应用程序的进程与线程

从应用程序的角度来看,应用程序一般定义了应用对应的进程,以及上面运行着的一系列的线程。开发人员进行debug的时候的关注点会是哪个进程的哪个线程的哪个stacktrace。

 

Android四大组件

从Android应用程序的角度来看,除了进程和线程的这一个角度,从程序里面详细类的组织来看,Android应用程序包含有Activity、Service、ContentProvider、Broadcast Receiver4大组件,这四大组件就是通过我们之前说过的XML插件方式配置到AndroidManifest当中的。而这其中,Activity组件是Android应用程序界面开发最重要的一个部分。

 

Android系统界面用户体验组织(TASKS)

从Android系统界面的组织来看,用户体验到的直观界面都是由很多Tasks组成的。比如,我们从最近任务栏,就可以看到很多TASKS。用户可以随意的切换到其中的一个TASK。也可以按HOME键退出一个TASK。TASK的组织形式是ActivityStack,一个ActivityStack是由好多Activity组成的堆栈。从Android系统设计者的角度来看,一个Task定义了一组行为,而这组行为是由跨多个应用程序的多个Activity组织而构成的。这个打破了以往由应用程序(进程)来定义的资源边界。一个Task就是一个场景的实现。从此构建系统用户体验和行为的边界在于TASK,而非应用程序或者进程。

 

Task

  • Task 是activities的集合,通过activity stack来管理,依靠先进后出队列来实现;
  • 每个task中都至少有一个activity,新实例出来的activity置于栈顶
  • Task可以被切换到后台

Activity Stack  

  • 如上所诉,Activity承担了大量的显示和交互工作,从某种角度上将,我们看见的应用程序就是许多个Activity的组合。为了让这许多 Activity协同工作而不至于产生混乱,Android平台设计了一种堆栈机制用于管理Activity,其遵循先进后出的原则,系统总是显示位于栈 顶的Activity,从逻辑上将&#x
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值