学习笔记

来源:互联网 发布:绵阳广播电视网络 编辑:程序博客网 时间:2024/06/05 01:01

摘自http://blog.csdn.net/guolin_blog/article/details/41087993;

即使有很多个Activity分别都是来自于不同应用程序的,Android系统仍然可以将它们无缝地结合到一起,之所以能实现这一点,就是因为这些Activity都是存在于一个相同的任务(Task)当中的(很多分享功能分享完成后可以一步一步back到原App中去,就是因为所有的这些Activity属于同一个任务,栈)。  

Activity的启动方式:

1.在xml里面:

Standard.  标准、默认启动方式。不论Activity是否存在实例,是否在栈顶,都new一个。

SingleTop.  如果该Activity在栈顶,则不会new 实例。而是直接调用Activity的onNewIntent();方法。FLAG_ACTIVITY_SINGLE_TOP

SingleTask. 在启动其他应用程序时,如果该Activity存在,则直接调用onNewIntent(),否则则new一个该Activity的实例,并将该Activity放入新的任务(管理栈)中。因为"singleTask"模式在默认情况下只有启动其它程序的Activity才会创建一个新的任务,启动自己程序中的Activity还是会使用相同的任务(这是因为同一个应用的taskAffinity默认都是包名,是相同的,可以指定taskAffinity不同,则不会在同一个任务)。 在启动其他应用程序和intent的FLAG_ACTIVITY_NEW_TASK类似

SingleInstance. 该种方式生成的Activity只会存在单独、专属它的Activity管理栈中。

FLAG_ACTIVITY_CLEAR_TOP  如果不结合其他的flag来使用则会关闭被启动Activity在栈中上层所有Activity。(如ABCD、通过该flag再启动B的话,则CD被关掉,剩下AB)。如果加上FLAG_ACTIVITY_SINGLE_TOP 标签,或者B在xml中设置了任意配置,则会启动onNewIntent();配合FLAG_ACTIVITY_NEW_TASK一起使用可以将后台任务切换到前台。如通过通知栏启动Activity时。

0 0
原创粉丝点击