Android 多任务配置
本篇文章是为了了解安卓中的多任务系统,了解安卓中Task的栈结构,以及怎么配置app的多任务,模仿微信小程序。
多任务配置
在安卓手机上,当我们打开微信小程序,可以看到小程序其实是一个独立的任务,这是怎么配置的呢。
其实很简单,我们只需要在安卓项目的配置文件中,对Activity进行以下配置即可
<activity
android:name=".MainActivity2"
android:launchMode="singleTask"
android:taskAffinity="com.demo.myapplication.task2" />
重点在这两行代码,缺一不可。
android:launchMode="singleTask"
android:taskAffinity="com.demo.myapplication.task2"
launchMode
很常见,是启动模式的一种,singleTask
代表单独在一个栈中,taskAffinity
就是当前的Activity所属的栈。
taskAffinity
属性很少见,它实际上是有个默认值,当不指定Activity的taskAffinity
时,它会先查找application
标签中的值,如果application
中也不存在,就会使用配置文件中的包名(package)
在安卓手机上的任务管理器中会根据taskAffinity
区分不同的任务,所以我们配置很多taskAffinity
,就能在手机的任务管理器中看到很多的任务。
还有另外一种动态配置的方法,可以达到同样的效果:
Intent intent = new Intent(this, MainActivity2.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT);
intent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
startActivity(intent);
高级配置
- 换名称
微信中的小程序是不同的名字。可以这样设置 在Activity中进行设置:
setTaskDescription(new ActivityManager.TaskDescription("任务名"));
另一种方法在配置文件中进行设置。
<activity
android:name=".MainActivity2"
android:label="任务名"
/>
- 换图标
任务管理器中显示的图标样式。如果不设置,就和宿主的是一样的图标。
if( Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){
setTaskDescription(new ActivityManager.TaskDescription("任务名", bitmap));
}
同样的效果,也可以在配置文件中进行设置
<activity
android:name=".MainActivity2"
android:icon="@drawable/setting"
/>
注意:名称和图标的更改如果不单独设置,就会同步app的名称和图标。
标签:配置文件,配置,Intent,Android,taskAffinity,多任务,图标 From: https://blog.51cto.com/u_16163453/6534422