2013-09-04 2 views
0

У меня есть служба фона, которая может создавать постоянные уведомления. Когда пользователь нажимает на уведомление, он начинает действие. Затем пользователь может нажать кнопку «Домой», в результате чего это действие будет остановлено.Перезапуск (и показ) остановленной активности

Если пользователь затем снова нажимает на уведомление, я хочу перезапустить (и показать) ту же активность (если 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); 

Если я нажал на кнопку Home, чтобы перейти от этой деятельности, а затем провел главную кнопку вниз вывести «список последних приложений» и отобразить активность там, где он работает, как ожидается - активность отображается в состоянии, в котором оно было оставлено, все хорошо.

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

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

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

+0

Опубликовать манифестную запись для этой деятельности. –

+0

Когда вы говорите «нет радости», можете ли вы объяснить, что происходит? Что вы видите, что отличается от того, что вы хотите видеть? –

+0

Я обновил вопрос, чтобы надеяться на ваши вопросы. –

ответ

0

Чтобы иметь такое же поведение, как «приведение приложения на передний план», вам просто нужно создать Intent, который содержит активность root, и установить Intent.FLAG_ACTIVITY_NEW_TASK. Корневая активность - это активность, которая имеет ACTION = MAIN и CATEGORY = LAUNCHER в манифесте. Например:

Intent intent = new Intent(this, MyRootActivity.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
0

Попробуйте этот код при отображении уведомления:

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

Заменить MainActivity с классом деятельности вы хотите запустить, и строки для заголовка уведомления и текста, как вам нужно.

+0

К сожалению, этот подход не будет работать для меня. Я упомянул об этом на самом деле только для того, чтобы дать проблему некоторому контексту, но на самом деле мне нужно запустить приостановленную деятельность, независимую от уведомления. –

Смежные вопросы