Intereting Posts
Причин: retrofit.RetrofitError: метод POST должен иметь тело запроса Не удалось выполнить dex: java.nio.BufferOverflowException. Проверьте журнал Eclipse для отслеживания стека В поле формы ввода в WebView не отображается мягкая клавиатура Android-программирование – проблемы с кучей Есть ли способ проверить, отладка или публикация подписи приложения? TypeNotPresentException при запуске тестовой системы Android с robolectric и eclipse Возможно ли потерять соединение базы данных SQLite? Кордовы android build не срабатывают немедленно Ошибка индекса Android за пределами границ без кода приложения в трассировке стека Безопасность потоков в библиотеках Android Как скопировать и отредактировать файлы в оболочке Android? Использование «android: textAppearance» в TextView / EditText завершается с ошибкой, но «стиль» работает Как сделать обычные ссылки в TextView доступными? Android: открыть pdf-файл из моего приложения, используя встроенный просмотрщик PDF-файлов Как используется TabItem при размещении в XML-макете?

Как перенести существующую деятельность Android на фронт через уведомление

У меня есть одно приложение для Android, когда он запускает службу, я хочу показать уведомление в строке состояния. Затем пользователь может перейти к другому приложению, нажав клавишу HOME. Однако, когда я пытаюсь вернуть предыдущее запущенное приложение на Front с помощью значка уведомлений, есть некоторые проблемы с существующей деятельностью. Даже я объявляю его режимом «Single Top» (я хочу запустить существующую активность, так как есть связанная с ней работа), так или иначе, что OnDestroy активности был вызван до OnResume. Вот мой код создания объекта уведомления. Не могли бы вы указать мне, что это не так. Благодарю.

private void showNotification () { Intent toLaunch = new Intent(getApplicationContext(), MySingleTopActivity.class); PendingIntent intentBack = PendingIntent.getActivity(getApplicationContext(), 0,toLaunch, PendingIntent.FLAG_UPDATE_CURRENT); notification.setLatestEventInfo(getApplicationContext(), getText(R.string.GPS_service_name), text, intentBack); .... } 

Solutions Collecting From Web of "Как перенести существующую деятельность Android на фронт через уведомление"

 private void showNotification() { Intent toLaunch = new Intent(getApplicationContext(), MySingleTopActivity.class); //add these two lines will solve your issue toLaunch.setAction("android.intent.action.MAIN"); toLaunch.addCategory("android.intent.category.LAUNCHER"); PendingIntent intentBack = PendingIntent.getActivity(getApplicationContext(), 0, toLaunch, PendingIntent.FLAG_UPDATE_CURRENT); notification.setLatestEventInfo(getApplicationContext(), getText(R.string.GPS_service_name), text, intentBack); ... } 

Я бы рекомендовал вам сделать это,

 private void showNotification () { Intent toLaunch = new Intent(getApplicationContext(), DummyActivity.class); // You'd need this line only if you had shown the notification from a Service toLaunch.setAction("android.intent.action.MAIN"); PendingIntent intentBack = PendingIntent.getActivity(getApplicationContext(), 0,toLaunch, PendingIntent.FLAG_UPDATE_CURRENT); .... } 

DummyActivity должен просто быть активностью, которая всегда заканчивается в событии oncreate.

В файле манифеста добавьте эти строки

 <activity class=".DummyActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> </intent-filter> </activity> 

Надеюсь, это поможет …

Еще один способ запуска вашего пакета.

 private void NotificationwithLaucherSelfPackage(Context context , int notification_id){ Notification noti = new Notification.Builder(context) .setContentTitle("Your Title") .setContentText("Your Text") .setSmallIcon(R.drawable.abc_ic_menu_share_mtrl_alpha) .setContentIntent(PendingIntent.getActivity( context ,notification_id , getLauncherIntent(context) , PendingIntent.FLAG_UPDATE_CURRENT)) .build(); NotificationManager notificationManager = (NotificationManager) context.getSystemService(context.NOTIFICATION_SERVICE); } private Intent getLauncherIntent(Context context){ return context.getPackageManager().getLaunchIntentForPackage(context.getPackageName()); } 

Когда действие находится в фоновом режиме, Android может в любой момент убить действие для освобождения ресурсов. Подробную информацию о жизненном цикле см. В документации по действиям.

Ваша деятельность должна быть готова сохранить свое состояние в методах onPause или onSaveInstanceState. В приведенном выше документе содержатся дополнительные сведения о сохранении устойчивого состояния.