Intereting Posts
Как захватить событие onclick в отключенном EditText в приложении для Android Определить, является ли TextView в ListView эллипсированным Перетащите для динамического изменения пары смежных макетов на Android Есть ли способ получить количество меток чисел, используемых в файле jar Цвет заливки на круг не всегда отображается на Картах Google v2 Могу ли я избежать встроенного полноэкранного видеоплеера с HTML5 на iPhone или Android? Google Play Store – Неожиданная ошибка (-32600) Запуск нескольких экземпляров приложений Android, таких как параллельное пространство Инвертировать цвета выделенного Android Вкладка «Панель действий Android» со списком прокрутки сделала дублированный вид после изменения ориентации Отображать push-уведомление в поле предупреждения, когда приложение работает на переднем плане Прокси-сервер Charles не работает по методу SSL Connect Как всегда отображать вкладки ActionBar ниже ActionBar в Android Ошибка жизненного цикла виртуального фрагмента RecyclerView не отображается

Android: как проверить, работает ли приложение в фоновом режиме

Я новичок в android. У меня есть приложение на основе клиентского сервера. Сервер продолжает отправлять уведомления об обновления клиенту через каждую минуту, а на стороне клиента мое приложение получает эти обновления и отображает их с помощью Toast. Но теперь моя проблема заключается в том, что когда мое клиентское приложение переходит на фоновый сервер, он продолжает отправлять уведомления об обновлениях, и мой клиент отображает его, как если бы приложение находилось на переднем плане. Я не понимаю, как проверить, работает ли приложение в фоновом режиме.

Solutions Collecting From Web of "Android: как проверить, работает ли приложение в фоновом режиме"

http://developer.android.com/guide/topics/fundamentals.html#lcycles – описание жизненного цикла приложения android.

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

Обновление, см. Это в первую очередь:

Проверка, работает ли приложение Android в фоновом режиме


Чтобы проверить, отправлено ли ваше приложение на задний план, вы можете вызвать этот код onPause() для каждого действия в вашем приложении:

  /** * Checks if the application is being sent in the background (ie behind * another application's Activity). * * @param context the context * @return <code>true</code> if another application will be above this one. */ public static boolean isApplicationSentToBackground(final Context context) { ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); List<RunningTaskInfo> tasks = am.getRunningTasks(1); if (!tasks.isEmpty()) { ComponentName topActivity = tasks.get(0).topActivity; if (!topActivity.getPackageName().equals(context.getPackageName())) { return true; } } return false; } 

Для этого вы должны включить это в свой AndroidManifest.xml

 <uses-permission android:name="android.permission.GET_TASKS" /> 

Только для уровня API 14 и выше

Вы можете использовать ComponentCallbacks2 для activity , service и т. Д.

Пример:

 public class MainActivity extends AppCompatActivity implements ComponentCallbacks2 { @Override public void onConfigurationChanged(final Configuration newConfig) { } @Override public void onLowMemory() { } @Override public void onTrimMemory(final int level) { if (level == ComponentCallbacks2.TRIM_MEMORY_UI_HIDDEN) { // app is in background } } } 

Вы можете использовать getRunningAppProcesses () в ActivityManager.