我有一些代码可以发出下载已完成的通知,单击此通知后,我希望它重新启动我的活动。
当前,通知是在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的更改。
有没有办法做到这一点?
答案 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
如果已设置,并且此活动是在新任务中启动或将现有任务置于顶部,则它将作为任务的前门启动。这将导致应用使该任务处于适当状态所需的任何亲缘关系(将活动移入或移出该活动),或者仅在需要时将该任务重置为其初始状态。