我買了標籤的應用程序和通知欄條目, 當我把它發送到後臺(點擊home鍵) ,並嘗試通過點擊重新打開應用程序的 通知欄,應用程序重新啓動(最後選中 選項卡丟失)。重新打開後臺應用
當我按住home鍵,如果應用程序是在 背景,並從那裏選擇它或者點擊主屏幕上的 應用程序的圖標,一個狀態是 每默認恢復(正確的選項卡中選擇)
IMO通知的意圖是錯誤的,但我是 不知道如何解決它。
簡而言之:當我點擊通知條目時,如何獲取後臺應用程序回到 的前景?
thx!
我買了標籤的應用程序和通知欄條目, 當我把它發送到後臺(點擊home鍵) ,並嘗試通過點擊重新打開應用程序的 通知欄,應用程序重新啓動(最後選中 選項卡丟失)。重新打開後臺應用
當我按住home鍵,如果應用程序是在 背景,並從那裏選擇它或者點擊主屏幕上的 應用程序的圖標,一個狀態是 每默認恢復(正確的選項卡中選擇)
IMO通知的意圖是錯誤的,但我是 不知道如何解決它。
簡而言之:當我點擊通知條目時,如何獲取後臺應用程序回到 的前景?
thx!
你實現方法的onSaveInstanceState如在lifecycle documentation?
它可能建議您在暫停的應用程序,並立即回去吧,該應用程序還掛在內存中的背景。但是,您不能依賴於此,因此每次進入後臺時應保存當前打開的選項卡狀態,並在重新激活時恢復它。
把這兩條線。這將恢復目前暫停的活動:
notificationIntent.setAction(Intent.ACTION_MAIN);
notificationIntent.addCategory(Intent.CATEGORY_LAUNCHER);
這是偉大的作品。但更好的使用常量notifyIntent.setAction(Intent.ACTION_MAIN); notifyIntent.addCategory(Intent.CATEGORY_LAUNCHER); – garmax1 2013-11-03 19:11:01
Intent intent = new Intent(Application.getContext(), ActivityHome.class);
intent.setAction("android.intent.action.MAIN");
intent.addCategory("android.intent.category.LAUNCHER");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
Application.getContext().startActivity(intent);
public static boolean isApplicationRunningBackground(final Context context) {
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<RunningTaskInfo> tasks = am.getRunningTasks(am.getRunningAppProcesses().size());
for (RunningTaskInfo runningTaskInfo : tasks) {
if (runningTaskInfo.topActivity.getPackageName().equals(context.getPackageName())) {
MyLog.i("UTIL", "packageName:" + runningTaskInfo.topActivity.getPackageName());
MyLog.i("UTIL", "className" + runningTaskInfo.topActivity.getClassName());
return true;
}
}
return false;
}
Intent notificationIntent;
if (Util.isApplicationRunningBackground(context)) {
notificationIntent = new Intent(context, MainView.class);
} else {
notificationIntent = new Intent(context, Splash.class);
}
使用意圖兩個標誌
intent.setFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT | Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
我也面臨着同樣的問題,並極力尋找的答案,但這裏S中的技巧:使用通知意圖和活動的onCreate()方法打開一個空白活動,而不是嘗試使用您的通知意圖重新啓動應用程序,只需完成()即可。這會將您帶回應用程序上次查看的活動。
請注意,從通知中觸發'Intent'總是會創建一個新的'Activity'實例;你不能直接返回到現有的實例。關於我的頭頂,我相信你可以使用CLEAR_TOP之類的標誌(和'Activity'中的'onNewIntent')來確保現有的實例保持不變。 – 2010-06-04 14:41:21