Android 監(jiān)聽(tīng)?wèi)?yīng)用前/后臺(tái)切換實(shí)例代碼
前言
這周接到一個(gè)需求,需要在應(yīng)用從后臺(tái)切換到前臺(tái)時(shí),展示我們的廣告。展示頁(yè)面其實(shí)可以復(fù)用以前的開(kāi)屏廣告頁(yè),唯一的問(wèn)題就是如何監(jiān)聽(tīng)?wèi)?yīng)用從后臺(tái)切到了前臺(tái)。
正文
在眾多方法中,我采用了以下這種方式。廢話不多說(shuō),咱們直接看代碼:
//自定義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里重寫(xiě)onTrimMemory方法:
@Override public void onTrimMemory(int level) { super.onTrimMemory(level); if (level == TRIM_MEMORY_UI_HIDDEN) { isBackGround = true; Log.i("bo", "APP遁入后臺(tái)"); } }
onTrimMemory方法為開(kāi)發(fā)者提供了一個(gè)合適的時(shí)機(jī),用來(lái)釋放掉一些不用的資源,從而讓我們的應(yīng)用在后臺(tái)存活更長(zhǎng)時(shí)間。其中l(wèi)evel參數(shù)就代表我們的應(yīng)用當(dāng)前在內(nèi)存中的狀態(tài),TRIM_MEMORY_UI_HIDDEN代表應(yīng)用從前臺(tái)切到了后臺(tái)。這個(gè)時(shí)候我們便可以標(biāo)記應(yīng)用切換到了后臺(tái)。
接下來(lái)需要監(jiān)聽(tīng)?wèi)?yīng)用在什么時(shí)候回到了前臺(tái):
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回到了前臺(tái)"); } } @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來(lái)監(jiān)聽(tīng)所有Activity的生命周期回調(diào),并在onActivityResumed方法中進(jìn)行判斷:調(diào)用了Activity的onResume方法,并且已經(jīng)標(biāo)記為后臺(tái)狀態(tài),那么就可以判斷APP回到了前臺(tái)。
以下是log輸出:
以上就是我對(duì)這個(gè)問(wèn)題的解決方案。
結(jié)尾
這個(gè)方案要求API大于等于14,因?yàn)閞egisterActivityLifecycleCallbacks方法要求API在14以上。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Android判斷當(dāng)前應(yīng)用程序處于前臺(tái)還是后臺(tái)的兩種方法
- android編程判斷應(yīng)用是否具有某個(gè)權(quán)限的方法
- android判斷手機(jī)是否安裝地圖應(yīng)用實(shí)現(xiàn)跳轉(zhuǎn)到該地圖應(yīng)用
- Android編程判斷應(yīng)用程序是否已安裝的方法
- Android應(yīng)用程序轉(zhuǎn)到后臺(tái)并回到前臺(tái)判斷方法
- Android開(kāi)發(fā)判斷一個(gè)app應(yīng)用是否在運(yùn)行的方法詳解
- Android開(kāi)發(fā)中實(shí)現(xiàn)應(yīng)用的前后臺(tái)切換效果
- Android應(yīng)用程序保持后臺(tái)喚醒(使用WakeLock實(shí)現(xiàn))
- Android中應(yīng)用前后臺(tái)切換監(jiān)聽(tīng)的實(shí)現(xiàn)詳解
- Android編程判斷當(dāng)前應(yīng)用是否在后臺(tái)運(yùn)行的方法示例
相關(guān)文章
Android系統(tǒng)中的藍(lán)牙連接程序編寫(xiě)實(shí)例教程
這篇文章主要介紹了Android系統(tǒng)中的藍(lán)牙連接程序編寫(xiě)實(shí)例教程,包括藍(lán)牙的設(shè)備查找及自動(dòng)配對(duì)等各種基礎(chǔ)功能的實(shí)現(xiàn),十分給力,需要的朋友可以參考下2016-04-04Android使用Canvas對(duì)象實(shí)現(xiàn)刮刮樂(lè)效果
這篇文章主要介紹了Android使用Canvas對(duì)象實(shí)現(xiàn)刮刮樂(lè)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04Android仿音樂(lè)播放器帶進(jìn)度的播放暫停按鈕
這篇文章主要為大家詳細(xì)介紹了Android仿音樂(lè)播放器帶進(jìn)度的播放暫停按鈕,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-12-12Android編程學(xué)習(xí)之抽象類AbsListView用法實(shí)例分析
這篇文章主要介紹了Android編程學(xué)習(xí)之抽象類AbsListView用法,較為詳細(xì)的分析了抽象類AbsListView的功能、結(jié)構(gòu)、定義及使用注意事項(xiàng)等,需要的朋友可以參考下2015-10-10Android實(shí)現(xiàn)數(shù)據(jù)按照時(shí)間排序
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)數(shù)據(jù)按照時(shí)間排序的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-09-09Android?完整購(gòu)物商城界面的實(shí)現(xiàn)案例
這篇文章為大家?guī)?lái)一個(gè)Android?完整購(gòu)物商城的界面具體的實(shí)現(xiàn),案例中含有商品列表的顯示,為商城最重要的功能之一,感興趣的朋友來(lái)看看吧2022-03-03Android使用Realm數(shù)據(jù)庫(kù)實(shí)現(xiàn)App中的收藏功能(代碼詳解)
這篇文章主要介紹了Android使用Realm數(shù)據(jù)庫(kù)實(shí)現(xiàn)App中的收藏功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03