android上对于任务栈的控制还是比较常见的,尤其是在小程序、小游戏的场景。
笔者近期也有在实际项目中碰到,因此就好好学习了一下,作此文以记录。
本文主要还是自己的一些使用总结,如有不对或者需要补充的地方,欢迎评论交流。
此文需要有对android启动模式的基础,还不了解的读者推荐看下笔者前面的文章:
完全理解android Activity启动模式LauchMode (深入Activity与任务栈)
android上要使用多任务栈,除了要了解启动模式之外,就是需要了解taskAffinity这个属性。
关于taskAffinity的官网地址:
https://developer.android.com/guide/topics/manifest/activity-element#aff
使用taskAffinity属性大概有以下几种场景:
默认一般都是支持多个实例的,主要讲下不支持多个实例的场景:
假设主页面是A,B的启动模式是singleInstance并且任务栈名称与A相同。
那么按照如下操作,会有不合理的场景出现:
此时由于B是singleInstance,因此B不会在A的任务栈中。而又由于B是默认的任务栈名称,因此也没有自己单独的任务栈。
于是此时B虽然是存活的状态,但是却无法通过操作系统上的操作回到B。换句话说对用户来说B就是不可见的了。
为了避免这种情况的发生,除了给singleInstance设置单独的任务栈名称之外。也可以通过其他的一些方式,比如:
- 设置悬浮窗给用户保留进入B的入口。(这个需要权限)
- 设置单独的桌面图标可以直接跳转到B。
如果不主动关闭任务栈,那么用户还是可以再系统的任务栈预览页面重新进入的。
笔者还是列举了自己使用时碰到的两种常见:
笔者自己写了demo用于测试多任务栈下的各种场景,如有需要可以自行查看。
Demo github地址:https://github.com/Double2hao/ActivityTaskTest
本文地址:https://blog.csdn.net/Double2hao/article/details/107729834
如对本文有疑问, 点击进行留言回复!!
Execution failed for task ‘:app:checkDebugDuplicateClasses‘解决方案
android开发实例(activity生命周期和启动模式、IPC机制)
ndk-build使用Application.mk 如何构建文件
缟译后的第三方APK放到packages/apps/测试报错解决
方法废弃解决Environment.getExternalStorageDirectory(), Environment.getExternalStoragePublicDirectory()
Android 开发RecyclerView(回顾)+Context(介绍和结构)+Application(创建和作用)
android 支持java 8 stream api(不需要minSdkVersion 24)
网友评论