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);
}

В настоящее время поведение таково:

  • если пользователь выходит из системы и попадает в уведомление, он все равно откроет новый FileManagerActivity (ops!). Я мог бы обойти это, начав с моей аутентификации и передав намерение вверх по моему стеку в естественном порядке, когда приложение уже запущено, это то место, где у меня трудности.

  • : если пользователь уже открыл FileManagerActivity, щелкнув уведомление, поверх него будет помещен второй экземпляр. В этом случае я хочу, чтобы текущий запущенный FileManagerActivity получал фокус вместо запуска нового экземпляра.

Как я могу добиться правильного поведения?

24
задан Tom Fobear 28 March 2011 в 21:27
поделиться