0

我有一个可以创建持久通知的后台服务。当用户单击通知时,它会启动一个活动。然后用户可以按下 Home 按钮导致该活动停止。

如果用户然后再次单击通知,我想重新启动(并显示)相同的活动(如果 Android 尚未销毁它 - 我很欣赏它可以),以便 GUI 状态与用户离开时一样。

我怎样才能做到这一点?

活动清单条目

<activity android:name=".mrwidget.MrWidget" android:theme="@android:style/Theme.NoTitleBar" android:launchMode="singleTask">
  <intent-filter><action android:name="android.intent.action.MAIN">  </action>
    <category android:name="android.intent.category.LAUNCHER"></category>
  </intent-filter>
</activity>

如果从按住 Home 按钮时获得的“最近的应用程序列表”中选择活动,我所追求的实际上与您获得的行为相同。

详细说明 - 当我第一次单击通知时,我使用以下方法成功创建了活动:

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
mService.startActivity(i);

如果我按下主页按钮退出此活动,然后按住主页按钮以调出“最近的应用程序列表”并从那里选择活动,它按预期工作 - 活动显示在它离开的状态,所有好的。

当我在以后的任何时候也选择相同的通知时,我想要同样的行为,即它显示以前创建的活动。我尝试使用以下方法执行此操作:

intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
activity.startActivity(intent);

其中“活动”是对用户第一次选择通知时创建的活动的引用,但这样做不会导致活动显示。

4

2 回答 2

0

显示通知时尝试此代码:

Intent notificationIntent = new Intent(this, MainActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
notification.setLatestEventInfo(this, "Title", "Text", pendingIntent);

替换MainActivity为您要启动的 Activity 的类,以及您需要的通知标题和文本的字符串。

于 2013-09-04T15:03:59.727 回答
0

要具有与“将应用程序带到前台”相同的行为,您只需要创建一个包含根活动的 Intent 并设置Intent.FLAG_ACTIVITY_NEW_TASK. 根活动是清单中具有 ACTION=MAIN 和 CATEGORY=LAUNCHER 的活动。像这样:

Intent intent = new Intent(this, MyRootActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
于 2013-09-06T15:12:54.273 回答