在片段上创建了CountDownTimer。如果CountDownTimer正在运行,用户可以在应用程序内导航,也可以在应用程序之外。每当用户走到CountDownTimer片段之外时,顶部应该有通知。如果用户单击通知,则应将其定向到CountDownTimer片段,并且计时器应显示正确的倒计时。以下代码打开创建CountDownTimer的活动。但是它启动了该Activity的一个新实例。有没有办法获得相同活动的旧实例,以便我可以从相同的先前状态恢复活动?
{
Notification.Builder noti = new Notification.Builder(getActivity());
noti.setContentTitle("kick counter").setSmallIcon(R.drawable.mom_ic_launcher).setAutoCancel(true);
Intent notificationIntent = new Intent(getActivity(), KickCounterActivity.class);
notificationIntent.addFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT);
PendingIntent contentIntent = PendingIntent.getActivity(getActivity(), 0, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
noti.setContentIntent(contentIntent);
NotificationManager notifier = (NotificationManager)getActivity().getSystemService(Context.NOTIFICATION_SERVICE);
notifier.notify(1, noti.build());
}
答案 0 :(得分:2)
查看Intent
- 标志。我是这样做的:
final Intent openActivityIntent = new Intent(context, MainActivity.class);
openActivityIntent.setAction("YOUR_ACTION");
openActivityIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(openActivityIntent);
在您的活动中,如果您将其注册为听众并对其采取行动,您将收到该行动,例如:导航到您的计时器。如果您需要其他数据,可以使用openActivityIntent.putExtras(bundle)
答案 1 :(得分:0)
您可以尝试将活动的启动模式设置为“singleTop”,请参阅http://developer.android.com/guide/topics/manifest/activity-element.html#lmode
或使用FLAG_ACTIVITY_SINGLE_TOP意图,请参阅http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_SINGLE_TOP
答案 2 :(得分:0)
您可以为意图添加额外内容。在正在启动的活动中,您可以添加类似的内容。
//Notification Intent
notificationIntent.putExtra("Fragment",1);
//MainActivity.class
Bundle extras = getIntent().getExtras();
if(extras.getInt("Fragment") == 1){
//Load Fragment Here
}
尝试一下,让我知道它是否有效。
答案 3 :(得分:0)
使用此标志
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
| Intent.FLAG_ACTIVITY_SINGLE_TOP
| Intent.FLAG_ACTIVITY_NEW_TASK);