android唤醒前台,Android将后台应用唤起到前台的方法 (SDK 4.0, ActivityLifecycleCallbacks)...
對于4.0以上的機型也是采用通過Application注冊ActivityLifecycleCallbacks接口,對于4.0以下的機型我們會嘗試反射ActivityThread中的mInstrumentation對象。在前臺執行跳轉廣告等。
App registerActivityLifecycleCallbacks(API 14)-Android- https://blog..net/ShareUs/article/details/79109520
Android將后臺應用喚起到前臺的方法- http://blog..net/peidonghui/article/details/49682159
-- 在Android應用中,有一種場景是點擊通知欄,喚起應用,此場景有如下幾種情況:
1 應用在前臺,點擊通知,直接執行跳轉操作;
2 應用在后臺,將后臺進程喚起到前臺,執行跳轉操作;
3 應用沒有啟動,啟動應用,執行跳轉操作;
4 應用在后臺被回收,恢復應用,然執行跳轉操作。
-- 目前以下幾種方式能夠實現上述效果:
1 通過設置Intent的flag,代碼如下:
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);
具體的細節還需要在確定,但是存在的一個問題是沒有辦法通過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會被清空,這樣用戶的操作行為會丟失。
每種方式都存在各自的優缺點,需要根據實際需求選取。
//鎖屏廣播
public ?class SreenBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
Log.d("KeepAppAlive","SreenLockReceiver-->監聽到系統廣播:"+action);
if(mStateReceiverListener == null){
return;
}
if(Intent.ACTION_SCREEN_ON.equals(action)){ ? ? ? ? // 開屏
mStateReceiverListener.onSreenOn();
}else if(Intent.ACTION_SCREEN_OFF.equals(action)){ ?// 鎖屏
mStateReceiverListener.onSreenOff();
}else if(Intent.ACTION_USER_PRESENT.equals(action)){ // 解鎖
mStateReceiverListener.onUserPresent();
}
}
}
總結
以上是生活随笔為你收集整理的android唤醒前台,Android将后台应用唤起到前台的方法 (SDK 4.0, ActivityLifecycleCallbacks)...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: datepicker 颜色 androi
- 下一篇: 类别选择器在HTML中如何表示,CSS类