码迷,mamicode.com
首页 > 移动开发 > 详细

[Android]知识总结一:Activity

时间:2016-04-10 09:04:46      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:

  1.1 首先是Activity的生命周期

  • onCreate, onStart, onRestart, onResume, onPause, onStop, onDestory 这7个回调可以说明Activity的生命周期模型。

 

  直接上google给的生命周期图来说明:

 

  技术分享

 

 总结以下的几点:

  1. Activity从创建至用户可见并能够交互,onCreate->onStart->onResume; 其中Created和Started状态属于瞬时状态,只有Resumed状态属于长时间状态。
  2. Activity被遮挡,无论是部分遮挡还是完全不可见,必会调用onPause, 而进入后台的activity有可能因为内存不足等原因被系统杀掉回收,所以如果有需要进行数据保留的情形,请一定在onPause或者onSaveInstance中进行。onStop只有在完全被遮挡时才会被回调。
  3. 当ActivityA启动ActivityB时,其时序图如下:

  技术分享

  

  从图中可以看出,当ActivityA处于Resumed状态时,发送了startActivity的消息给ActivityB, 我们可以看出时序为:

  ActivityA: onCreate->onStart->onResume->onPause                                                          ->onStop

  ActivityB:                                                                ->onCreate->onStart->onResume

 

 

 

  d. 启动Activity是通过intent来传递消息的,intent中不光是可以携带参数,也可以设置不同的启动方式,如:

              setAction(intent, action);

             setClass(context, class);

             setComponent(componentName);

             setClassName(package, classname);

 

1.2   Activity和Task Record的关系

简单的总结一下:

  1. 首先Task Record是用来记录Activity的调用栈情况;栈是一种通用数据结构,先进后出;
  2. 一般而言,一个应用程序如果不特殊指明其对应task, 那么所有的activity的task即是以应用的packagename命名的task。
  3. 可以通过标签android:taskAffinity来指定activity所属的task;
  4. Activity具有4种android:launchMode选项,分别为”standard”, “singleTop”, “singleTask”, “singleInstance”, 其中standard和singleInstance最容易理解,

    Standard:当Activity在被启动时,无论什么情况都会产生一个新的实例加入到栈中记录。

    singleInstance: 表明该Activity在任何时候只有一个实例,并且该实例是单独存在一个栈中记录的,也就是说此栈只存在这一个activity的实例。

    singleTop: 若该Activity已经在栈顶位置时,启动该Activity时,是不会产生实例,而是会触发既有的activity的onNewIntent回调。若该Activity不在栈顶,在行为和standard一致。

    singleTask: 拥有此标签的Activity,也只能产生一个实例,所以当栈中已经存在该实例的话,那么再次启动此Activity时,会将已有栈中的该Activity的实例之上的所有Activity都进行出战操作,并且触发onNewIntent回调。

     5.查看task情况,可以使用以下的命令:

                adb shell dumpsys activity

 

  

    因个人知识和能力所限,如有错误请留言,欢迎讨论,共同进步。

 

[Android]知识总结一:Activity

标签:

原文地址:http://www.cnblogs.com/yw-technology/p/5373317.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!