AndroidAndroid 多任务配置

Posted 小陈乱敲代码

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AndroidAndroid 多任务配置相关的知识,希望对你有一定的参考价值。

前言

本篇文章是为了了解安卓中的多任务系统,了解安卓中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的名称和图标。

最后

愿你有一天,真爱自己,善待自己。

本文在开源项目:在下方二维码中已收录,如何面试拿高薪中已收录,里面包含不同方向的自学编程路线、面试题集合/面经、及系列技术文章等,资源持续更新中…

高性能云服务器 精品线路独享带宽,毫秒延迟,年中盛惠 1 折起

以上是关于AndroidAndroid 多任务配置的主要内容,如果未能解决你的问题,请参考以下文章

什么是多宿主主机(multi-homed machine)?

Java多线程系列七——ExecutorService

AndroidAndroid源码及系统目录结构分析

AndroidAndroid如何一进入一个activity就弹出输入法键盘

Spring Cloud:多环境配置注册中心安全认证容器宿主机IP注册

Docker 多宿主互联