Как начать работу, когда основное действие работает в фоновом режиме?

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

Я попытался включить его следующим образом:

@Override public void onProductsResponse(List<Product> products) { this.products = products; moboolo.setProducts(products); if(moboolo.getAutomaticNotificationsMode() != 0 && products.size() > 0){ if(isRunningInBackground) { Intent intent = new Intent(this, ProductListActivity.class); intent.setAction(Intent.ACTION_MAIN); startActivity(intent); } } drawProducts(products); } 

Это метод из основной деятельности. Когда выполняется onPause (), isRunningInBackground устанавливается true. Когда я попытался отладить его, когда основное приложение было запущено в фоновом режиме, строка

StartActivity (намерение) не повлияло (действие не появилось).

Кто-нибудь знает, как размыть логику, чтобы начать активность из основного действия, когда основное действие выполняется в фоновом режиме (после вызова onPause ())?

Спасибо.

Вы не можете заставить Activity отображаться из приложения, использующего фоновое изображение. В документации говорится :

Если приложение работает в фоновом режиме и требует внимания пользователя, приложение должно создать notificaiton, который позволяет пользователю отвечать на его или ее удобство.

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

Вы должны использовать уведомление о состоянии . Это позволяет вашему приложению помещать значок в строку состояния. Затем пользователь может сдвинуть ящик панели состояния и щелкнуть ваше уведомление, чтобы открыть приложение и показать соответствующее действие. Именно так подавляющее большинство приложений Android уведомляет пользователя о запуске в фоновом режиме.

Чтобы завершить ответ FLAG_ACTIVITY_REORDER_TO_FRONT , вам не нужен ни один из этих флагов, кроме FLAG_ACTIVITY_REORDER_TO_FRONT . Вам просто нужно создать PendingIntent из вашего обычного намерения и вызвать новый метод send () PendingIntent для отправки намерения. Вот как я это сделал:

 Intent yourIntent = new Intent(this, YourActivity.class); // You can send extra info (as a bundle/serializable) to your activity as you do // with a normal intent. This is not necessary of course. yourIntent.putExtra("ExtraInfo", extraInfo); // The following flag is necessary, otherwise at least on some devices (verified on Samsung // Galaxy S3) your activity starts, but it starts in the background ie the user // doesn't see the UI yourIntent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); PendingIntent pendingIntent = PendingIntent.getActivity(getApplicationContext(), 0, yourIntent, 0); try { pendingIntent.send(getApplicationContext(), 0, yourIntent); } catch (Exception e) { Log.e(TAG, Arrays.toString(e.getStackTrace())); } 
 Intent i= new Intent("android.intent.category.LAUNCHER"); i.setClass(getApplicationContext(), MyActivity.class); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); i.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); PendingIntent i2 = PendingIntent.getActivity(getApplicationContext(), 0, insIntent,Intent.FLAG_ACTIVITY_NEW_TASK); try { i2.send(getApplicationContext(), 0, i); } catch (Exception e) { e.printStackTrace(); } 

И на MyActivity's onCreate …

 getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED); getWindow().addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON); 

Это приведет к тому, что ваша деятельность будет перенесена на фронт, если основной фокус работает.

Intereting Posts
Работа с дублирующимися записями в AndroidStudio: java.util.zip.ZipException Gradle Duplicate Entry: java.util.zip.ZipException API YouTube youtube воспроизводит двух или более игроков Youtube в одном основном действии Java.lang.IllegalArgumentException: Недопустимый символ в элементе управления 7 при выполнении запроса https Загрузка файлов не работает с TransferUtility Amazon S3 в Android Как разместить «сетку» изображений в центре экрана Android: как использовать цвета текущей темы в ярлыке xml? Создайте progressDialog только со спиннером (посередине) Может кто-то объяснить разницу между GCM и Google Pub / Sub Ошибка активации ActivityMonitor в Android GetActivity () никогда не возвращается Как реализовать autocompletetextview со списком? Как заставить приложение перейти на другую страницу, если он не запускается в первый раз RejectedExecutionException из AsyncTask, но не ударил пределы Параметр hl для веб-интерфейса Google.Play для арабского языка Android и отражение