В моем приложении есть система, в которой я могу показывать диалоги из любого места приложения, даже из вторичных потоков. Когда я получаю некоторые уведомления от сервера, я просто передаю диалог перед глазами пользователя (диалог отображается в прозрачном действии, открытом из контекста приложения). Моя проблема в том, что, когда приложение находится в фоновом режиме и получает сигналы от сервера, оно запускает прозрачную активность, содержащую диалоговое окно, поэтому приложение выходит на передний план - что противоречит правилам Android (и моего).
Я создал систему уведомлений, поэтому на экране отображаются поступления от сервера.
Я связал с уведомлением прозрачную активность (которая содержит диалог), поэтому, когда пользователь щелкнет по уведомлению, будет выведено диалоговое окно.
Intent notificationIntent = new Intent(CVSApplication.getInstance(), CVSDialogActivity.class);
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent contentIntent = PendingIntent.getActivity(CVSApplication.getInstance(), 0, notificationIntent, 0);
Проблема в том, что приложение все равно выводится на передний план, даже если пользователь не нажимает на уведомление.
Есть ли способ предотвратить возврат CVSDialogActivity из фона при вызове startActivity?
Вот намерение, которое запускает CVSDialogActivity:
intent = new Intent(app, CVSDialogActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra(USE_CUSTOM_CONTENT, false);
intent.putExtra(INSTANCE, this.hashCode());
Я тоже пробовал этот вариант:
intent = new Intent(app, CVSDialogActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
.addFlags(Intent.FLAG_FROM_BACKGROUND);
intent.putExtra(USE_CUSTOM_CONTENT, false);
intent.putExtra(INSTANCE, this.hashCode());
, но когда вызывается startActivity (намерение), приложение выводится на передний план (я хочу показать действие, содержащее диалоговое окно, но в фоновом режиме, и когда пользователь нажимает на уведомление, чтобы вывести приложение на передний план) .
Спасибо,
Alex