欢迎查看合集:
Java、Android面试高频系列文章合集
本人今年参加了很多面试,也有幸拿到了一些大厂的offer,整理了众多面试资料,后续还会分享众多面试资料。
整理成了面试系列,由于时间有限,每天整理一点,后续会陆续分享出来,感兴趣的朋友可关注+收藏
每启动一次Activity,就会创建一个新的Activity实例并置于栈顶。谁启动了这个Activity,那么这个Activity就运行在启动它的那个Activity所在的栈中。
应用场景: 一般我们不主动设置启动模式,都是标准模式。
如果要启动的 Activity 已经在任务栈的栈顶,系统不会创建新的实例,而是重用栈顶的实例,调用其 onNewIntent() 方法(被复用的Activity的onCreate、onStart不会被系统调用,因为它并没有发生改变,但是一个新的方法 onNewIntent会被回调(Activity被正常创建时不会回调此方法))。如果不在栈顶,就会创建新的实例。
应用场景:singleTop适合接收推送通知的内容显示页面。APP接收到多条推送消息,点开不同消息,均由同一实例展示。例如,某个新闻客户端的新闻内容页面,如果收到10个新闻推送,每次都打开一个新闻内容页面是很烦人的。
在一个任务栈中,只允许存在一个该类型的 Activity 实例。如果要启动的 Activity 已经在任务栈中存在,则会将其上面的所有 Activity 移出栈,并调用其 onNewIntent() 方法。如果不在栈中,则会创建一个新的实例。
应用场景:APP的home页面,假设用户在主页跳转到其他页面,运行多次操作后想返回到主页,假设不使用SingleTask模式,在点击返回的过程中会多次看到主页,这明显就是设计不合理了。
新开一个任务栈,该栈内只存放当前实例。
应用场景:singleInstance适合需要与程序分离开的页面。如APP经常调用的拨打电话、系统通讯录、系统Launcher、锁屏键、来电显示等系统应用。