Activity启动模式介绍

来源:互联网 发布:服务器防御软件 编辑:程序博客网 时间:2024/06/13 07:56

# Activity启动模式

启动模式 模式介绍 singleInstance 如果Activity没有创建过或者已经销毁,会创建一个新的栈,并且一个singleInstance的Activity占一个特殊的栈,在Activity销毁的时候栈也会随之销毁。简单总结为单例,单独栈。 singleTask Activity不会创建单独的栈,如果A为singleTask且A为当前显示的Activity,在A内再次启动A,A不会重新创建,onNewIntent(Intent intent)方法会被回调。A->B->C->D-A,假如BCD都是不是singleInstance,这时候栈内只剩A。 singleTop Activity不会创建单独的栈,如果A为singleTask且A在栈顶,在A内再次启动A,A不会重新创建,onNewIntent(Intent intent)方法会被回调。A->B->C->D-A,假如BCD都是不是singleInstance,这时候栈内为A->B->C->D-A,这是和singleTask区别。 standard 这是默认的Activity启动模式,启动新的Activity或者返回都是遵循栈的模式。

singleInstance 单例模式

会创建一个新的Activity栈,并且会独占这个栈。

栈的创建特性,这里假设A是singleInstance,BCD是其它模式,现在调用顺序为:A->B->A->C->D,返回时的顺序是D->C->B->A。

  • A和A所在的栈同时只会存在一个,已经存在了就不会在重新创建,但是onNewIntent(Intent intent)方法会被回调;
  • 因为BCD和A不在一个栈内,只有BCD所在的栈的Activity弹出以后才会从A所在的栈中弹出新的Activity。

singleTask 栈内单例模式

不会创建单独的栈,如果栈内已经存在,不会重新创建onNewIntent(Intent intent)会被调用。

特有属性:A为singleTask,BCD为非singleInstance,A-B-C-D-A会清除栈中的BCD,最终栈中只剩A。

  • A不会重新创建但onNewIntent(Intent intent)会被调用;
  • A..-..-A会清除当前栈中A-A之间的所有Activity。

singleTop 栈顶单例模式

不会创建单独的栈,如果在栈顶的时候再次启动当前Activity,不会创建新的Activity,onNewIntent(Intent intent)会被调用。

特有属性:A为singleTop,A->A,栈中还是只有一个A。

  • A在栈顶,A启动A,A不会重新创建,onNewIntent(Intent intent)会被调用;
  • 其它时候和standard一样。

standard 基本模式

这是默认的Activity启动模式,启动新的Activity或者返回都是遵循栈的模式。
0 0
原创粉丝点击