Intereting Posts
Как обратиться к лямбда изнутри? Per-file CPPFLAGS в Android.mk Android с использованием ресурсов массива xml Выполнение не выполнено для задачи ': app: transformClassesWithDexForDebug' при внедрении Google для Android Android Emulator не работает на Ubuntu после обновления Android Studio до версии 2.0 – не найдена библиотека Qt SlidingMenu не отображается правильно Android: может AsyncTask вернуться в другой поток, чем поток пользовательского интерфейса? Android-приложение «Первое время» Прослушать доступ к местоположению отключить / включить в настройках Ресурсы $ NotFoundException: ресурс не является Drawable (цвет или путь)? Различия между Android, убивающей приложение, и пользователя, отскакивающего его от недавнего списка приложений Может ли кто-нибудь объяснить эти взломы Android-ROM: HBOOT / загрузчик, радио, изображение восстановления, update.zip, разблокировка NAND, RUU? Как добавить панель действий в платформу Android 2.3? Ошибка: метод add (int, Fragment, String) в типе FragmentTransaction не применим для аргументов (int, FragementTest, String) Ошибка JNI: Локальная таблица переполнения 512 записей

Как остановить запуск, когда приложение переходит на задний план?

Я пытаюсь установить runnable, который может загружать объявления каждые 5 секунд (конечно, 5 секунд слишком быстро, это просто для целей тестирования)

Вот мой код:

package com.admobsdk_dfp_handler; import com.google.ads.*; import com.google.ads.doubleclick.*; import android.os.Bundle; import android.os.Handler; import android.app.Activity; import android.view.Menu; import android.widget.RelativeLayout; public class AdMobSDK_DFP_Handler extends Activity { private DfpAdView adView; private Handler handler = new Handler(); private Runnable runnable = new Runnable() { public void run() { adView.loadAd(new AdRequest()); handler.postDelayed(this, 5000); } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_ad_mob_sdk__dfp__handler); adView = new DfpAdView( this, AdSize.BANNER, AD_UNIT_ID); RelativeLayout layout = (RelativeLayout) findViewById(R.id.mainLayout); layout.addView(adView); adView.loadAd(new AdRequest()); handler.postDelayed(runnable, 5000); }; @Override protected void onDestroy() { handler.removeCallbacks(runnable); super.onDestroy(); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.activity_ad_mob_sdk__dfp__handler, menu); return true; } } 

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

Есть ли способ остановить выполнение, когда приложение скрыто в фоновом режиме? Большое спасибо.

Solutions Collecting From Web of "Как остановить запуск, когда приложение переходит на задний план?"

Просто используйте onPause()

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

 @Override protected void onPause() { handler.removeCallbacks(runnable); super.onPause(); } 

Необязательный

Если вы хотите возобновить эту работоспособность. Просто переопределите onResume() вызов onResume()

 @Override protected void onResume() { handler.postDelayed(runnable, 5000); super.onResume(); } 

Удалите также handler.postDelayed(runnable, 5000); onCreate()

onPause() onStop() функции вы можете поместить туда handler.removeCallbacks(runnable);

Вы можете получить дополнительную информацию отсюда. Посмотрите на круг жизни деятельности

OnPause () вызывается, когда приложение идет в фоновом режиме. Удалить runnable в onPause ()

 protected void onPause() { handler.removeCallbacks(runnable); super.onPause(); }