Панель уведомлений Android открывает последнее активное действие?

Я создаю приложение таймера, и когда я запускаю таймер, у меня есть возможность перейти на Android Home или начать любое другое действие.

Когда я запускаю таймер, я устанавливаю значок панели уведомлений, и если я использую какое-либо другое приложение (имеется в виду переход от запущенной активности таймера), и теперь мне нужно вернуться к моей ранее запущенной активности таймера, щелкнув значок уведомления ???

Когда я нажимаю, я запускаю новую активность таймера экземпляра, а не ранее запущенную активность таймера! , и если я затем нажму кнопку «Назад», он покажет мне предыдущую активность таймера.

Вопрос: как вызвать ранее запущенную активность через панель уведомлений, чтобы не запускать новый экземпляр этой активности??

Это пример моего кода ниже:

private void notificationBar()
{
    String ns = Context.NOTIFICATION_SERVICE;
    NotificationManager mNotificationManager = (NotificationManager) getSystemService(ns);
    int icon = R.drawable.ico;
    CharSequence tickerText = "some title...";
    long when = System.currentTimeMillis();

    Notification notification = new Notification(icon, tickerText, when);
    Context context = getApplicationContext();
    CharSequence contentTitle = "some app title";
    CharSequence contentText = "...some info !";
    Intent notificationIntent = new Intent(this, main.class);
    PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent,  PendingIntent.FLAG_UPDATE_CURRENT | Notification.FLAG_AUTO_CANCEL);

    notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);


    mNotificationManager.notify(NOTIF_ID, notification);

}    
private void notificationClose(int notifID)
{
    String ns = Context.NOTIFICATION_SERVICE;
    NotificationManager mNotificationManager = (NotificationManager) getSystemService(ns);
    mNotificationManager.cancel(notifID);

}

person Nezir    schedule 03.11.2010    source источник


Ответы (2)


Я нашел ответ о флагах: Android: новый Intent() запускает новый экземпляр с android:launchMode=singleTop

Intent intent= new Intent(context, YourActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);
person Nezir    schedule 04.11.2010

Я не уверен, что понимаю, что вы имеете в виду.

Я полагаю, вы могли бы добавить дополнительное намерение, чтобы указать, какое именно уведомление использовалось для вызова вашего приложения. Это вообще помогает?

person Emmanuel    schedule 03.11.2010
comment
Привет, Мануэль. У меня есть этот код, и он работает почти так, как предполагалось. Единственное, что нажатие на панель уведомлений не открывает/не показывает ранее начатую активность? открыть новый экземпляр этой деятельности? Это теперь ясно ? есть таймер активности, таймер запущен, я создаю значок уведомления, я делаю какое-то другое приложение, и через некоторое время я нажимаю на панель уведомлений, и мне нужно открыть действие таймера, время которого тикает, а не новый экземпляр свежей активности :) - person Nezir; 03.11.2010
comment
В этом случае проверьте атрибут launchMode для активности: developer. android.com/guide/topics/manifest/ Я думаю, вы хотите использовать singleTop. Это помогает? - person Emmanuel; 04.11.2010