Android PendingIntent带你到一个已经存在的活动?

真的不知道如何search这个…

我有一个以下这是每当一个工作被添加或从我的队列中删除,以通知状态栏中调用:

private void showNotification() { int jobsize = mJobQueue.size(); int icon = (jobsize == 0) ? android.R.drawable.stat_sys_upload_done : android.R.drawable.stat_sys_upload; Notification notification = new Notification(icon, "Test", System.currentTimeMillis()); Intent intent = new Intent(this, FileManagerActivity.class); PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 0); notification.flags = (Notification.FLAG_SHOW_LIGHTS | Notification.FLAG_AUTO_CANCEL); notification.setLatestEventInfo(this, "Uploading to our servers", getString((jobsize > 0) ? R.string.notification_active_transfers : R.string.notification_no_transfers), pendingIntent); mNotifyManager.notify(NOTIFICATION, notification); } 

现在的行为是这样的:

  • 如果用户注销并触发通知,它仍然会打开一个新的FileManagerActivity(ops!),我可以通过从身份validation活动开始,将自己的堆栈以自然顺序传递给应用程序跑步是我有困难的地方。

  • 如果用户已经有FileManagerActivity打开,点击通知将把第二个实例放在它上面。 在这种情况下,我想让当前运行的FileManagerActivity接收焦点,而不是启动一个新的实例。

我怎么能得到正确的行为?

Solutions Collecting From Web of "Android PendingIntent带你到一个已经存在的活动?"

我之前通过将Activity设置为使用应用程序清单中的启动模式 “singleTop”来完成此操作。 它将实现所需的function,使用现有的活动,如果存在的话。 在这种情况下,onNewIntent将在您的活动中被调用。

您需要检查FileManagerActivity进行身份validation,并在用户未login的情况下根据需要启动新的活动。

我认为join这些工作:

intent.setAction(Long.toString(System.currentTimeMillis的()));

PendingIntent.FLAG_UPDATE_CUR

 Intent intent = new Intent(context, MyOwnActivity.class); intent.putExtra("foo_bar_extra_key", "foo_bar_extra_value"); intent.setAction(Long.toString(System.currentTimeMillis())); PendingIntent pendingIntent = PendingIntent.getActivity(context, 0,intent,PendingIntent.FLAG_UPDATE_CURRENT);