单击通知时启动/恢复应用程序

时间:2014-03-04 18:24:55

标签: android notifications

我有一个自定义应用程序,可以全屏运行多个活动(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,它将打开该活动,无论应用程序是否正在运行,因此只有在应用程序未运行时才会正确。

2 个答案:

答案 0 :(得分:0)

此行为是OS将对您的应用程序执行的默认行为除非操作系统需要内存和您的应用程序在backStack中。在这种情况下,OS将强制关闭您的应用程序(如果它在后台)。

所以,在这种情况下你不能依赖OS。您可以使用SharedPreference手动处理它,以存储您当前的应用程序状态,并在点击notification或打开您的应用程序时进行检查。

以下example SharedPreference如何使用{{1}}来保持应用状态

答案 1 :(得分:0)

您可以创建您的类,它使用堆栈或活动数组扩展Application。在onStop()活动中,您可以更改订单