您好,登錄后才能下訂單哦!
前言
這周接到一個需求,需要在應用從后臺切換到前臺時,展示我們的廣告。展示頁面其實可以復用以前的開屏廣告頁,唯一的問題就是如何監聽應用從后臺切到了前臺。
正文
在眾多方法中,我采用了以下這種方式。廢話不多說,咱們直接看代碼:
//自定義Application類 public class MyApplication extends Application
在清單文件中聲明
<application android:name=".MyApplication" android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme">
在MyApplication里重寫onTrimMemory方法:
@Override public void onTrimMemory(int level) { super.onTrimMemory(level); if (level == TRIM_MEMORY_UI_HIDDEN) { isBackGround = true; Log.i("bo", "APP遁入后臺"); } }
onTrimMemory方法為開發者提供了一個合適的時機,用來釋放掉一些不用的資源,從而讓我們的應用在后臺存活更長時間。其中level參數就代表我們的應用當前在內存中的狀態,TRIM_MEMORY_UI_HIDDEN代表應用從前臺切到了后臺。這個時候我們便可以標記應用切換到了后臺。
接下來需要監聽應用在什么時候回到了前臺:
registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() { @Override public void onActivityCreated(Activity activity, Bundle savedInstanceState) { } @Override public void onActivityStarted(Activity activity) { } @Override public void onActivityResumed(Activity activity) { if (isBackGround) { isBackGround = false; Log.i("bo", "APP回到了前臺"); } } @Override public void onActivityPaused(Activity activity) { } @Override public void onActivityStopped(Activity activity) { } @Override public void onActivitySaveInstanceState(Activity activity, Bundle outState) { } @Override public void onActivityDestroyed(Activity activity) { } });
我們使用registerActivityLifecycleCallbacks來監聽所有Activity的生命周期回調,并在onActivityResumed方法中進行判斷:調用了Activity的onResume方法,并且已經標記為后臺狀態,那么就可以判斷APP回到了前臺。
以下是log輸出:
以上就是我對這個問題的解決方案。
結尾
這個方案要求API大于等于14,因為registerActivityLifecycleCallbacks方法要求API在14以上。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。