Android將後臺應用喚起到前臺的方法

在Android應用中,有一種場景是點擊通知欄,喚起應用,此場景有以下幾種狀況:ui

1 應用在前臺,點擊通知,直接執行跳轉操做;this

2 應用在後臺,將後臺進程喚起到前臺,執行跳轉操做;.net

3 應用沒有啓動,啓動應用,執行跳轉操做;blog

4 應用在後臺被回收,恢復應用,然執行跳轉操做。進程

目前如下幾種方式可以實現上述效果:it

1 經過設置Intent的flag,代碼以下:io

Intent intent = new Intent(this, MainActivity.class);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
intent.setAction(Intent.ACTION_MAIN);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);class

具體的細節還須要在肯定,可是存在的一個問題是沒有辦法經過Intent傳遞參數;後臺

2 經過ActivityManager獲取RunningTasks,若是存在該應用對應的task,則經過方法

ActivityManager的moveTaskToFront(rti.id, ActivityManager.MOVE_TASK_WITH_HOME);方法將應用喚起到前臺,

而後處理相關操做;若是沒有相關的task,則直接啓動應用便可;

此方法存在的問題是,若是結合Notification使用時,用戶點擊Notification的時機是不肯定的,只能經過廣播處理,會比較麻煩;

3 將應用中的MainActivity設置爲singleTask,這樣點擊通知時,若是Activity存在,則會將應用喚起到前臺,若是不存在則會建立

新的Activity,

此方法存在的問題是,從Notification跳轉,會直接顯示MainActivity,跳過launch頁,另外,若是MainActivity設置爲singleTask以後

再次跳轉到MainActivity,那麼MainActivity之上已經存在的Activity會被清空,這樣用戶的操做行爲會丟失

每種方式都存在各自的優缺點,須要根據實際需求選取,若是有其它更好的方式,還望多多交流 ———————————————— 版權聲明:本文爲CSDN博主「peidonghui」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處連接及本聲明。 原文連接:https://blog.csdn.net/peidonghui/article/details/49682159

相關文章
相關標籤/搜索