1. 程式人生 > >同一個app不同activity顯示多工(仿微信小程式切換效果)

同一個app不同activity顯示多工(仿微信小程式切換效果)

簡書地址:https://www.jianshu.com/p/a8f695841008
轉載請註明出處

如題,這種效果類似微信小程式顯示的效果,就是開啟微信跳一跳後,切換安卓多工視窗(就是清理記憶體視窗),會看到如下頁面
多工圖1.jpg

微信小程式會在其中顯示兩個單獨的頁面,點選跳一跳會進入跳一跳小程式,點選後面的微信,即會進入微信聊天主頁面。

在安卓中如何實現呢?

這裡有兩種方法實現:

第一種:程式碼動態實現

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的名字,這裡就跟小程式有區別了,下面來說下如何實現這種效果:

首先:經過測試,在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才能顯示圖片了。
最終效果圖:
T最終效果圖.png

存在的問題:當新增flag開啟activity之後,如果切換了任務視窗,這時返回是不能返回到之前呼叫startActivity的方法的頁面了,如果沒有切換就不會存在這個問題,微信也是一樣,像微信大佬都沒有解決(也可能沒這個需求),反正我是沒有辦法滴。