同一个app不同activity显示多任务(仿微信小程序切换效果)

简书地址:https://www.jianshu.com/p/a8f695841008
转载请注明出处

如题,这种效果类似微信小程序显示的效果,就是打开微信跳一跳后,切换安卓多任务窗口(就是清理内存窗口),会看到如下页面
同一个app不同activity显示多任务(仿微信小程序切换效果)_第1张图片

微信小程序会在其中显示两个单独的页面,点击跳一跳会进入跳一跳小程序,点击后面的微信,即会进入微信聊天主页面。

在安卓中如何实现呢?

这里有两种方法实现:

第一种:代码动态实现

Intent intent = new Intent(this, SecondActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT);
intent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
startActivity(intent);

添加上面的两个Flag即可,有些文章说关闭的时候要使用

finishAndRemoveTask();

方法,我这边没使用该方法也没发现问题,如果存在潜在问题,知道的人麻烦告知下,谢谢!!!

第二种:在AndroidManifest.xml中配置属性

参考链接:在近期任务列表显示单个APP的多个Activity

第二种方法由于需要写死配置,可能对于我来说作用不大,所以也没有测试,需要了解的人可以查看上面地址。

注意:这里来说下处理第一种方法的问题

使用上面的方法确实是实现了微信小程序多任务窗口的效果,但你会发现两个窗口在文章开头的图中的地方显示的是相同的名字,即你APP的名字,这里就跟小程序有区别了,下面来说下如何实现这种效果:

首先:经过测试,在manifest.xml中给要显示的activity设置android:lable,这种方法是可行的,但会相当于是固定了,不可变了。

然后:在manifest.xml中给该activity设置android:icon也是可以的,这样就实现了显示”跳一跳”文字和logo了。

最后:当然还是同样需要在代码中动态设置,不然固定死对于程序员来说有瑕疵。

在需要显示的activity中调用下面的代码即可显示不同文字

setTaskDescription(new ActivityManager.TaskDescription("跳一跳"));

聪明的程序员都会看下该方法的源码以及需要参数的构造方法,所以同时显示图片和文字以及需要适配就需要用下面的代码了

if( Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){
    setTaskDescription(new ActivityManager.TaskDescription("跳一跳", mBitmap));
}

没错,需要5.0以上才能实现,参数的构造就需要传入bitmap才能显示图片了。
最终效果图:
同一个app不同activity显示多任务(仿微信小程序切换效果)_第2张图片

存在的问题:当添加flag打开activity之后,如果切换了任务窗口,这时返回是不能返回到之前调用startActivity的方法的页面了,如果没有切换就不会存在这个问题,微信也是一样,像微信大佬都没有解决(也可能没这个需求),反正我是没有办法滴。

你可能感兴趣的:(android,学习总结)