Intereting Posts
Как использовать флиппер с тремя макетами? Как отключить мой диалог прогресса после загрузки webview? Изменить фон сообщения об ошибке EditText Как создать квадратное растровое изображение из прямоугольного растрового изображения в Android Аудио-система отпечатков пальцев в Java Преобразование YUV-данных камеры в ARGB с помощью renderscript Расширение приложения для обмена переменными глобально Как выполнить уведомление-действие (щелчок) на заблокированном экране? GCM «регистрационный идентификатор» больше не регистрируется Добавить новый элемент в значок на кнопке – Android Android: используйте обычный текст, используя намерение (для всех приложений для обмена сообщениями) Как использовать пользовательский ArrayAdapter в отдельном классе? Wrap_content на recycleview, взять высоту элемента (горизонтальный список) NetworkStatsManager.queryDetailsForUid не получает «одинаковые» значения, такие как TrafficStats Обфускация в проектах Xamarin

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

Я пытаюсь установить 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(); }