android启动模式小结

启动模式

standard
标准模式,会在启动他的activity中的任务栈中创建activity实例,注意:application context是没有任务栈的。

singleTop
单栈顶模式。同一个任务栈里如果需要启动的actiivty位于栈顶,则不会实例化,而是直接调用onNewIntent。

singleTask
单任务模式。启动一个新的activity,先找对应的任务栈,未找到则new一个。再找实例,若实例存在,则该实例会调用onNewIntent,位于该实例之上的activty的全部出栈。

singleInstance
单实例模式。占有唯一的任务栈,而且也只有自己一个实例。
设置taskAffinity与默认包名不一致时,此actvity会独立出来,用户可以通过多任务管理下切换到该任务。
此实例启动的activity若查找不到匹配的taskAffinity,会为其创建新的任务栈,而一般情况下,taskAffinity与singleTask结合才有意义。

该模式下一旦未设置taskAffinity,变成后台任务栈的时候,用户是不能直接切换到此activity中的,需要通过其他任务栈intent启动。

taskAffinity
任务粘合度。其实可以理解为任务栈的唯一标识,设置后的任务栈会显示展示在用户的任务切换栏中。
除了singleInstance创建的实例所在的任务栈中可能无法没被标识,其他创建模式均会在默认任务栈中创建。
单独使用taskAffinity的standard是无效的(除了singleInstance启动的,至于原因还有待考究),需要配合singleTask使用,这样才能实现任务栈的调度。

切换tips:

点击app的图标,就是查找带有下列入口的activity所在的任务栈,再把栈顶的activity显示出来。

 <action android:name="android.intent.action.MAIN" />
 <category android:name="android.intent.category.LAUNCHER" />

点击home键,可以理解为调用home activity,把其他任务栈都变成后台任务栈,变成不可见状态。想要直接打开对应的activity,可以在任务切换栏中选择对应的任务栈,或者点击桌面app图标,进入默认的任务栈。

点击back键,相当于当前任务栈中的栈顶activity弹出,弹到栈底的话,就会退到最近使用的任务栈。

ps:
adb shell dumpsys activity指令可以查看手机的任务栈状态

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android 启动模式是一种定义了如何启动一个 Activity 的方式。它可以通过在 AndroidManifest.xml 文件中的 <activity> 元素上设置 launchMode 属性来指定。 常见的 Android 启动模式有四种:standard、singleTop、singleTask 和 singleInstance。 微信小程序是一种在微信平台上运行的应用程序,它比传统的 Android 应用程序更加轻量级、快速启动,并且不需要像传统应用程序一样去下载和安装。 当我们从微信主界面启动一个微信小程序时,微信会为该小程序创建一个新的任务,并且为该小程序创建一个新的 Activity 并加载该小程序的内容。 无论是在哪个界面点击进入微信小程序,该小程序都会重新启动,表现出的行为和在 Android 中的 standard 启动模式一致。 如果我们在微信小程序的某个页面点击返回按钮,会回到上一个页面,这表现出的行为和在 Android 中的 singleTop 启动模式一致。 微信小程序没有类似于 singleTask 或 singleInstance 这样的启动模式选项,因为它是在微信平台上独立运行的。 在Android中,我们可以通过设置 launchMode 属性来控制 Activity 的启动模式,而在微信小程序中,这种控制是由微信平台自身决定的,并不由开发者来设置。 综上所述,Android 启动模式与微信小程序之间没有直接的对应关系,微信小程序在启动过程中表现出的行为与 Android 中的 standard 启动模式一致,而微信小程序的启动模式是由微信平台自身决定的,开发者无法进行设置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值