Android PendingIntent会带您进入已有的活动吗?

Tom*_*ear 24 notifications android android-activity android-pendingintent

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

每当在我的队列中添加或删除作业以在状态栏中发出通知时,我都会调用以下内容:

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);
}
Run Code Online (Sandbox Code Playgroud)

现在的行为是这样的:

  • 如果用户注销并点击通知,它仍然会打开一个新的FileManagerActivity(操作!)我可以通过启动我的身份验证活动并以自然顺序将意图传递给我的堆栈来解决这个问题,当应用程序已经是跑步是我遇到困难的地方.

  • 如果用户已经打开FileManagerActivity,则单击该通知将在其上放置第二个实例.在这种情况下,我希望当前运行的FileManagerActivity接收焦点而不是启动新实例.

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

Dav*_*unt 36

之前我已经通过将我的Activity设置为在Application Manifest中使用启动模式 'singleTop' 来完成此操作.它将使用现有活动(如果存在)来实现所需功能.在这种情况下,将在您的活动中调用onNewIntent.

您需要检入FileManagerActivity以进行身份​​验证,并在用户未登录时根据需要启动新活动.