Так как я не получил никакого ответа после поиска по этому вопросу, я прекратил попытки, но всего за несколько дней до того, как я попытался снова, и я нашел РЕШЕНИЕ. :) Я помещаю это здесь.
Но прежде всего я просто хотел переопределить мою проблему, и это было :: «Получение фоновой задачи на передний план из панели уведомлений о состоянии», т. Е. Когда я помещаю свое приложение в фоновый режим, нажимая кнопку «Домой», а затем заставляю его появляться на переднем плане все действия должны выходить на передний план в том же порядке, в котором они находятся в стеке приложения.
Для этого мне нужно было Pending Intent, которое при каждом запуске выводит мое приложение на передний план.
Здесь, когда мое приложение запускается, в строку состояния помещается уведомление, которое остается там до тех пор, пока мое приложение не запустится на устройстве.
Итак, вот код, который я пробовал:
NotificationManager nm = (NotificationManager) getSystemService(context.NOTIFICATION_SERVICE);
Notification notification = new Notification();
notification.flag = Notification.FLAG_ONGOING_EVENT | Notification.FLAG_NO_CLEAR;
Intent nIntent = new Intent();
final ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
final List<RecentTaskInfo> recentTaskInfos = am.getRecentTasks(1024,0);
String myPkgNm = getPackageName();
if (!recentTaskInfos.isEmpty()) {
RecentTaskInfo recentTaskInfo;
final int size = recentTaskInfo.size();
for (int i=0;i<size;i++) {
recentTaskInfo = recentTaskInfos.get(i);
if (recentTaskInfo.baseIntent.getComponent().getPackageName().equals(myPkgNm)) {
nIntent = recentTaskInfo.baseIntent;
nIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
}
}
}
PendingIntent pi = PendingIntent.getActivity(this, 0, nIntent, 0);
notification.setLatestEventInfo(getContext(), "some Title", "some text", pi);
nm.notify(0,notification);
Основным ключом здесь является baseIntent, документация которого гласит:
Исходный Намерение, использованное для запуска задачи. Вы можете использовать это намерение для повторного запуска
задание (если оно больше не выполняется) или вывести текущее задание на передний план.
Документация FLAG_ACTIVITY_NEW_TASK гласит: Если при использовании этого флага уже выполняется задание для действия, которое вы сейчас запускаете, то новое действие не будет запущено; вместо этого текущее задание будет просто выведено на переднюю часть экрана в том состоянии, в котором оно было последним.
Сначала я использовал его, но он не работает, как говорится, и есть много вопросов по этому поводу.
В любом случае ... до сих пор я находил этот способ хорошим для вывода задач на передний план, как это делает значок на главном экране Android.
Но, пожалуйста, расскажите мне о минусах этого пути, чтобы я мог улучшить.
:)