Android Application与thread、stack、task、activity之间的关系
来源:互联网 发布:建周通软件下载 编辑:程序博客网 时间:2024/05/17 09:02
假设我们有两个Android Application他们分别是testA和testB。testA中只用一个activity名称为m,testB中含有三个activity分别是a、b和c。
(1) Application与thread:一对多。Application可以出现多个线程,但是在子线程里边不能去绘制UI,否则会出现异常。
(2) Application与stack:多对多。Application启动时创建一个stack_A。singleInstance对应的activity单独在一个stack_B中(有几个singleInstance类型的activity就会有几个stack与之对应)。
注意:“standard”和”singleTop”对应的activity和收到的 Intent的发送者在同一个stack内。
“singleTask”对应的activity永远都会在stack_A中(并且不像有的人说的那样它在stack的最底层),
“singleInstance”对应的activity单独在stack_B中,有且只有它自己。
证明:(1)start testB ——> a ——> b(加载类型singleInstance) ——> c ——> back键 ——> 我们看到了a
根据stack的特性先进后出,如果a、b、c在同一个sack中我们按back键之后应当看到的是b,但是事实是我们看到了 a,此现象可以证明a和c处于同一个stack而b单独在另一个stack中,所以一个Application可以对应多个stack。
(2)start testB ——> a
start testA ——> m ——> c ——> back键 ——> m
根据stack的特性先进后出可以得出,m和c在同一个stack中,而c是testB中的activity,所以一个stack可以对应多个Application。
(3) Application与task:多对多。因为一个task对应一个stack。
(4) Application与activity:一对多,这个没得说。
补充:singleInstance类型的activity具有LocalService的一些特性,例如:如果我们不把singleInstance类型的activity销毁,启动此activity的应用即便退出,此activity仍然处于onStop状态。销毁activity的方法有3中:一种是去调用onDestroy,一种是按back键让其退出stack,还有一种就是系统去销毁。所以有一种情况我们就可以做出合理的解释了:一个android应用没有任何service但是当退出主页面后,从后台仍然能看到此进程在运行,这就有可能是我们使用了singleInstance类型的activity而没有去销毁它导致的。
singleTask对应的activity永远都会在自已应用程序的默认stack中,不管谁去调用它。例如:start testB ——> a,然后start testA ——> m ——> b(加载类型singleTask)——>back键——>a;注意如果:start testB ——> a——>b(加载类型singleTask)——>c,然后start testA ——> m ——> b(此时c被销毁)——>back键(b被销毁)——>a,
- Android Application与thread、stack、task、activity之间的关系
- Android Application与thread、stack、task、activity之间的关
- Android Application、Activity Stack 与 Task 的关系
- 简述Application,Activity,Activity Stack,Task之间的关系
- Android Application Stack Task Activities的关系
- Application,Activity, Process,Thread之间的关系
- Task、Back stack、taskAffinity、Activity启动模式之间的关系
- Activity, Service,Task, Process and Thread之间的关系
- Activity, Service,Task, Process and Thread之间的关系
- Activity, Service,Task, Process and Thread之间的关系
- Activity, Service,Task, Process and Thread之间的关系
- Activity, Service,Task, Process and Thread之间的关系
- Activity Stack ,Application和 Task的区别
- Application、Activity Stack 和 Task的区别
- Application、Activity Stack 和 Task的区别
- Application、Activity Stack和Task的区别
- Application、Activity Stack 和 Task的区别
- Application、Activity Stack 和 Task的区别
- sql where 1=1和 0=1 的作用
- JQuery获取服务器控件插件
- c语言不定参数函数
- 《java 中的 Hashtable类》
- ruby的class与module的区别
- Android Application与thread、stack、task、activity之间的关系
- 关于索引使用的几个小问题
- 黑马训练营_SQL学习笔记续二
- dos命令学习基础
- 快排算法也可以这样实现。。。@一
- 软件设计之易用性
- 301转向代码合集
- 項目管理FAQ
- 理想过程 关键词 随想