2010-06-02 84 views
6

我買了標籤的應用程序和通知欄條目, 當我把它發送到後臺(點擊home鍵) ,並嘗試通過點擊重新打開應用程序的 通知欄,應用程序重新啓動(最後選中 選項卡丟失)。重新打開後臺應用

當我按住home鍵,如果應用程序是在 背景,並從那裏選擇它或者點擊主屏幕上的 應用程序的圖標,一個狀態是 每默認恢復(正確的選項卡中選擇)

IMO通知的意圖是錯誤的,但我是 不知道如何解決它。

簡而言之:當我點擊通知條目時,如何獲取後臺應用程序回到 的前景?

thx!

+0

請注意,從通知中觸發'Intent'總是會創建一個新的'Activity'實例;你不能直接返回到現有的實例。關於我的頭頂,我相信你可以使用CLEAR_TOP之類的標誌(和'Activity'中的'onNewIntent')來確保現有的實例保持不變。 – 2010-06-04 14:41:21

回答

0

你實現方法的onSaveInstanceState如在lifecycle documentation?

它可能建議您在暫停的應用程序,並立即回去吧,該應用程序還掛在內存中的背景。但是,您不能依賴於此,因此每次進入後臺時應保存當前打開的選項卡狀態,並在重新激活時恢復它。

8

把這兩條線。這將恢復目前暫停的活動:

notificationIntent.setAction(Intent.ACTION_MAIN); 
notificationIntent.addCategory(Intent.CATEGORY_LAUNCHER); 
+2

這是偉大的作品。但更好的使用常量notifyIntent.setAction(Intent.ACTION_MAIN); notifyIntent.addCategory(Intent.CATEGORY_LAUNCHER); – garmax1 2013-11-03 19:11:01

4
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); 
1
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); 
     } 
0

使用意圖兩個標誌

intent.setFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT | Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 
2

我也面臨着同樣的問題,並極力尋找的答案,但這裏S中的技巧:使用通知意圖和活動的onCreate()方法打開一個空白活動,而不是嘗試使用您的通知意圖重新啓動應用程序,只需完成()即可。這會將您帶回應用程序上次查看的活動。

相關問題