在Android中单击通知后,如何重新启动而不是重新创建活动?

时间:2018-12-31 00:23:31

标签: java android android-studio

我有一些代码可以发出下载已完成的通知,单击此通知后,我希望它重新启动我的活动。

当前,通知是在BroadcastReceiver中创建的。这是我在通知中添加意图的部分。

NotificationManager nm = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
Intent resultIntent = new Intent(context, CurrentActivity.class);
resultIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK  );
PendingIntent resultPendingIntent = PendingIntent.getActivity(
    context,
    0,
    resultIntent,
    PendingIntent.FLAG_UPDATE_CURRENT);
Notification.Builder builder = new Notification.Builder(getApplicationContext());
builder.setContentIntent(resultPendingIntent);

现在,此操作是通过调用CurrentActivity方法破坏我的onDestroy(),然后调用onCreate()创建一个新实例。这对我来说是个问题,因为我的onDestroy()将BoundService与活动取消了绑定。我宁愿我的Activity刚重新启动(onStop()然后onRestart()然后onStart()),以便我的onCreate()onDestroy()方法可以处理绑定和解除绑定, onStart()方法处理对UI的更改。

有没有办法做到这一点?

2 个答案:

答案 0 :(得分:2)

我认为您可以考虑以不同方式设置意图标志,以实现所需的行为。

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

根据需要处理onResume活动中的UI更改。希望能有所帮助。

答案 1 :(得分:0)

尝试将活动标志设置为

resultIntent.setFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);

从此处查看国旗官方文件:https://developer.android.com/reference/android/content/Intent#FLAG_ACTIVITY_RESET_TASK_IF_NEEDED

  

如果已设置,并且此活动是在新任务中启动或将现有任务置于顶部,则它将作为任务的前门启动。这将导致应用使该任务处于适当状态所需的任何亲缘关系(将活动移入或移出该活动),或者仅在需要时将该任务重置为其初始状态。

相关问题