[知识点整理]Activity启动模式


"standard"

默认启动模式, 每次启动该Activity都会创建一个新的实例,并将其放入当前任务(返回栈)中

"singleTop"

如果目前已有一个该Activity的实例位于返回栈顶部,系统不会重新创建一个Activity,只是重新调用onNewIntent.

使用场景在消息详情或者是新闻详情界面,忽然有新消息或者新的新闻的推送,此时,点击通知栏,当前Activity不会重建,而是执行onNewIntent(Intent intent),重新设置Activity的内容来展示更新的消息,用户点击返回后,将直接回到消息列表或者新闻列表界面.

总结 "singleTop"适合接收通知启动的内容显示页面

"singleTask"

系统将会创建一个新的任务,并将这个任务放在栈底的位置.但是,如果当前任务中已经有一个相同的Activity实例了,那么系统将不会再创建一次它的实例,并会将它之上的Activity全部出栈.

使用场景一般来说应用的主界面都会以此为启动模式,你打开微信主界面(在栈的最底部)后,进入朋友圈(在栈的顶部),此时你点击 Home 键回桌面,并打开网易新闻。假设你想将网易新闻的一条新闻分享给微信好友,那么就按照 分享->微信-> 好友A->分享给他->留在微信。接着会跳转微信的主界面,即不是你原本所在的朋友圈,并且微信的栈只剩下一个元素:主界面的 Activity。这里就使用了 SingleTask(即以 SingleTask 加载模式打开微信主界面).

总结 "singleTask"适合作为程序入口点.

"SingleInstance"

在一个新栈中创建该Activity实例,并让多个应用共享改栈中的该Activity实例.
一旦该模式的Activity的实例存在于某个栈中,任何应用再激活该Activity时都会重用该栈中的实例,其效果相当于多个应用程序共享一个应用,不管谁激活该Activity都会进入同一个应用中.

使用场景闹铃的响铃界面。你以前设置了一个闹铃:上午6点。在上午5点58分,你启动了闹铃设置界面,并按 Home 键回桌面;在上午5点59分时,你在微信和朋友聊天;在6点时,闹铃响了,并且弹出了一个对话框形式的 Activity(名为 AlarmAlertActivity) 提示你到6点了(这个 Activity 就是以 SingleInstance 加载模式打开的),你按返回键,回到的是微信的聊天界面,这是因为 AlarmAlertActivity 所在的 Task 的栈只有他一个元素,因此退出之后这个 Task 的栈空了。如果是以 SingleTask 打开 AlarmAlertActivity,那么当闹铃响了的时候,按返回键应该进入闹铃设置界面。

总结适合需要与程序分离开的页面,不要用于中间页面,如果用于中间页面,跳转会有问题,比如:A -> B (singleInstance) -> C,完全退出后,在此启动,首先打开的是B

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值