真的不确定如何搜索...

每当添加或从队列中删除作业以在状态栏中发送通知时,都会调用以下命令:

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(操作!),我可以通过以下方式解决此问题:从我的身份验证 Activity 开始,并以自然顺序向上传递我的意图,当应用程序处于已经运行是我遇到困难的地方。
  • (如果用户已经打开FileManagerActivity),单击通知将在其上放置第二个实例。在这种情况下,我希望当前正在运行的FileManagerActivity能够获得焦点,而不是启动新实例。

  • 如何获得正确的行为?

    最佳答案

    在设置应用程序 list 中的Activity以使用launch mode'singleTop'之前,我已经完成了此操作。它将使用现有 Activity (如果存在)实现所需的功能。在这种情况下,onNewIntent将在您的 Activity 中被调用。

    如果用户未登录,则需要 checkin FileManagerActivity进行身份验证,并根据需要启动新的 Activity 。

    08-25 02:45