Повторно открыть фоновое приложение через элемент уведомлений

У меня есть приложение с вкладками и записью, когда я отправляю их на фон (нажмите кнопку «Главная») и попробуйте повторно открыть приложение, щелкнув по панели уведомлений, приложение перезагрузится (последняя выбранная вкладка будет потеряна).

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

ИМО намерение уведомления ошибочно, но я не уверен, как это исправить.

Короче: Как вернуть фоновое приложение на передний план, когда я нажимаю кнопку уведомления?

спасибо!

Solutions Collecting From Web of "Повторно открыть фоновое приложение через элемент уведомлений"

Поместите эти две строки. Это возобновит текущую приостановленную деятельность:

 notificationIntent.setAction(Intent.ACTION_MAIN); notificationIntent.addCategory(Intent.CATEGORY_LAUNCHER); 
 Intent intent = new Intent(Application.getContext(), ActivityHome.class); intent.setAction("android.intent.action.MAIN"); intent.addCategory("android.intent.category.LAUNCHER"); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); Application.getContext().startActivity(intent); 

Я столкнулся с одной и той же проблемой и решительно искал ответ, но вот трюк: вместо попытки перезапустить приложение с сохраненным состоянием, используя намерение уведомления, откройте пустое действие, используя намерение уведомления и метод onCreate () Деятельность, просто закончить (). Это вернет вас к последнему просмотренному действию в приложении.

 public static boolean isApplicationRunningBackground(final Context context) { ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); List<RunningTaskInfo> tasks = am.getRunningTasks(am.getRunningAppProcesses().size()); for (RunningTaskInfo runningTaskInfo : tasks) { if (runningTaskInfo.topActivity.getPackageName().equals(context.getPackageName())) { MyLog.i("UTIL", "packageName:" + runningTaskInfo.topActivity.getPackageName()); MyLog.i("UTIL", "className" + runningTaskInfo.topActivity.getClassName()); return true; } } return false; } Intent notificationIntent; if (Util.isApplicationRunningBackground(context)) { notificationIntent = new Intent(context, MainView.class); } else { notificationIntent = new Intent(context, Splash.class); } 

Вы внедряете методы onSaveInstanceState, как рекомендовано в документации по жизненному циклу ?

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

Использовать два флага в намерениях

 intent.setFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT | Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);