2014-03-04 92 views
0

我有一個自定義應用程序,其中有多個活動以全屏模式運行(SplashActivityMainActivityInfoActivity等等)。我目前正在處理通知,並試圖產生以下行爲:如果應用程序正在運行並置於後臺,並且用戶單擊通知,則最後一次運行的活動恢復。如果用戶沒有運行該應用程序,則啓動SplashActivity。有沒有辦法做到這一點?我使用下面的代碼單擊通知時啓動/恢復應用程序

android.app.NotificationManager notificationManager = (android.app.NotificationManager) instance.getSystemService(Context.NOTIFICATION_SERVICE); 

    Intent intent = new Intent(instance, SplashActivity.class); 
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); 

    PendingIntent contentIntent = PendingIntent.getActivity(instance, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); 

    NotificationCompat.Builder builder = new NotificationCompat.Builder(instance); 

    builder.setSmallIcon(iconId); 
    builder.setContentTitle(title); 
    builder.setStyle(new NotificationCompat.BigTextStyle().bigText(message)); 
    builder.setContentText(message); 
    builder.setContentIntent(contentIntent); 

    notificationManager.notify(0, builder.build()); 

如果我設定的活動SplashActivity.class它會打開該活動的應用程序是否正在運行與否,因此,如果應用程序沒有運行,只會是正確的。

+0

檢查[此鏈接](http://stackoverflow.com/questions/10955484/change-notification-intent-in-android) – Merlevede

+0

這幫了我http:// stackoverflow.com/questions/3305088/how-to-make-notification-intent-resume-rather-than-making-a-new-intent/39482464#39482464 – TharakaNirmana

回答

0

此行爲是OS將在您的應用程序上執行的默認行爲除非操作系統在backStack中需要內存和您的應用程序。在這種情況下,OS將強制關閉您的應用程序,如果它在後臺。

那麼,在這種情況下你不能依靠OS。您可以使用SharedPreference手動處理它,以存儲您當前的應用程序狀態,並在您的notification被點擊或您的應用程序正在打開時檢查它。

下面是如何使用SharedPreference,讓您的應用程序的狀態的example

+0

我已更新我的問題,說明我的默認行爲不這樣做是因爲我必須在單擊通知時指定要在意圖中啓動的活動,因此它將始終打開該活動,而不是恢復在將應用程序置於後臺之前打開的最後一個活動,在應用程序已經在運行。 – xlar8or

0

您可以創建類,這與堆棧或你的活動陣列擴展應用。並在onStop()的活動,你可能會改變秩序

相關問題