2014-02-12 51 views
0

我正在開發一個android應用程序,並且在一項活動中,當用戶按下HOME按鈕時,會出現通知。按下通知後,活動將從停止的地方恢復。問題是每次都重新創建活動。在按通知onDestroy(),然後調用onCreate()。但是,如果我通過「最近的應用程序」重新開放活動,它會成功恢復。在通知中恢復android中的活動

此問題已經在stackoverflow上問過,我已經嘗試過提供的答案,並沒有一個似乎工作。我使用的API是最新的4.4。我曾嘗試的選項是:

  • 的意圖標誌

intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP| Intent.FLAG_ACTIVITY_SINGLE_TOP);

  • 設置我怎樣才能模仿的活動singleInstancesingleTask

播放各地通過「最近的應用」打開我的活動時發送的意圖?

編輯:更多的警告,可能是重要的。在我的程序A B C中有3個活動。單擊啓動器圖標時,活動A首先啓動。該通知僅在從活動C轉到主頁時創建。我試圖恢復活動C.

回答

0

問題解決了。

我正在通過LogCat調試應用程序,並查看了ActivityManager生成的意圖。每當我更改Intent的標誌時,我都看不到LogCat中的更改。所以

02-12 11:26:39.586: I/ActivityManager(766): START u0 {flg=0x1000c000 cmp=com.example.app/.controllers.Activity3 bnds=[0,153][1080,345]} from pid -1

改變的Intent標誌並未更改日誌中的FLG變量。除此之外,通知圖像停留在狀態欄中,我的應用程序沒有銷燬它。我所做的是PendingIntent.FLAG_CANCEL_CURRENT標誌添加到的PendingIntent我會發送:

Intent intent = new Intent(this, Activity3.class); 
    intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); 
    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, 
      intent, PendingIntent.FLAG_CANCEL_CURRENT); 
    mBuilder.setContentIntent(pendingIntent); 

所以,問題是,我必須有之前創建一個不正確的PendingIntent,這是從來沒有被刪除。現在,我可以通過點擊通知來恢復活動。希望這可以幫助可能有類似問題的人。