日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

如何判斷APP在前臺還是后臺?

來源: 責編: 時間:2024-01-22 08:40:56 271觀看
導讀如何判斷一個APP在前臺還是后臺?可以通過RunningTasks,RunningProcess 以及ActivityLifecycleCallback判定。RunningTasks方式注意:getRunningTask方法在5.0以上已經被廢棄,只能返回自己和系統的一些不敏感的task,不再返回

如何判斷一個APP在前臺還是后臺?可以通過RunningTasks,RunningProcess 以及ActivityLifecycleCallback判定。VNA28資訊網——每日最新資訊28at.com

RunningTasks方式

注意:getRunningTask方法在5.0以上已經被廢棄,只能返回自己和系統的一些不敏感的task,不再返回其他應用的task,用此方法來判斷自身App是否處于后臺是有效的,但是無法判斷其他應用是否處于前臺。VNA28資訊網——每日最新資訊28at.com

private fun getTopApplication() {    //首先獲取到ActivityManager    val activityManager = getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager    if (activityManager.getRunningTasks(1) == null){        Log.e(TAG, "getForegroundActivity: ")        return    }    var runningTaskInfo = activityManager.getRunningTasks(1)[0]    if (runningTaskInfo == null) {        Log.e(TAG, "runningTaskInfo is null")        return    }    runningTaskInfo.topActivity?.let {        Log.e(TAG, "top application is ${it.packageName}")    }}

RunningProcess方式

注意:RunningProcess方法在5.0以上已經被廢棄,例如,在聊天類型的App中,大部分時間需要常駐后臺來不間斷地獲取服務器的消息,就必須把Service設置成START_STICKY,kill后會被重啟(等待5s左右)來保證Service常駐后臺。如果Service設置了這個屬性,這個App的進程就可以判斷為前臺。VNA28資訊網——每日最新資訊28at.com

appProcess.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND
private fun isAppForeground(): Boolean {    val activityManager = getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager    var runningAppProcesses = activityManager.runningAppProcesses    if (runningAppProcesses == null) {        Log.e(TAG, "runningAppProcesses is null")        return false    }    runningAppProcesses.forEach {        if (it.processName == packageName && (it.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND)) {            return true        }    }    return false}

ActivityLifecycleCallbacks方式

class MyActivityLifecycleCallbacks(    var onActivityCreatedAction: ((Activity, Bundle?) -> Unit)? = null,    var onActivityStartedAction: ((Activity) -> Unit)? = null,    var onActivityResumedAction: ((Activity) -> Unit)? = null,    var onActivityPausedAction: ((Activity) -> Unit)? = null,    var onActivityStoppedAction: ((Activity) -> Unit)? = null,    var onActivitySaveInstanceStateAction: ((Activity, Bundle) -> Unit)? = null,    var onActivityDestroyedAction: ((Activity) -> Unit)? = null) : Application.ActivityLifecycleCallbacks {    private var mCount=0    override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) {        onActivityCreatedAction?.invoke(activity, savedInstanceState)    }    override fun onActivityStarted(activity: Activity) {        mCount++        onActivityStartedAction?.invoke(activity)    }    override fun onActivityResumed(activity: Activity) {        onActivityResumedAction?.invoke(activity)    }    override fun onActivityPaused(activity: Activity) {        onActivityPausedAction?.invoke(activity)    }    override fun onActivityStopped(activity: Activity) {        mCount--        onActivityStoppedAction?.invoke(activity)    }    override fun onActivitySaveInstanceState(activity: Activity, outState: Bundle) {        onActivitySaveInstanceStateAction?.invoke(activity, outState)    }    override fun onActivityDestroyed(activity: Activity) {        onActivityDestroyedAction?.invoke(activity)    }    /**     * 這里我們把mCount的實際數值返回回去     */    fun getCount():Int = mCount}

這里我們對ActivityLifecycleCallbacks的實現類做了一層封裝,利用Kotlin的高階函數,當我們需要去實現那個聲明周期的回調的時候,就通過高階函數來提供回調處理,否則默認不做任何處理。然后我們在Application的onCreate中進行注冊:VNA28資訊網——每日最新資訊28at.com

class LifeApplication : Application() {    private val TAG = "LifeApplication"    private val mActivityLifecycleCallbacks by lazy {        MyActivityLifecycleCallbacks(            onActivityCreatedAction = { activit, bundle ->            Log.e(TAG, "onCreate: ")        },        onActivityStoppedAction = { activity ->            Log.e(TAG, "onStop ")        },        onActivityDestroyedAction = { activity ->            Log.e(TAG, "onDestroy")        })    }    override fun onCreate() {        super.onCreate()        instance = this        //注冊生命周期回調事件        registerActivityLifecycleCallbacks(mActivityLifecycleCallbacks)    }    /**     * 用于判斷當前進程是否處于前臺     */    fun isForegroundMethod(): Boolean = mActivityLifecycleCallbacks.getCount() > 0    companion object{        private var instance :LifeApplication?= null        fun getInstance () = instance!!    }

當我們不管是點擊Back鍵還是Home鍵都會回調到onStop方法,我們在onStart和onStop中分別對mCount值做了加減,這樣我們可以通過該數值來判斷當前App是前臺還是后臺。VNA28資訊網——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-65868-0.html如何判斷APP在前臺還是后臺?

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 實現定時任務的六種策略

下一篇: Python編程新手須知:避免代碼陷阱的秘訣

標簽:
  • 熱門焦點
  • 鴻蒙OS 4.0公測機型公布:甚至連nova6都支持

    華為全新的HarmonyOS 4.0操作系統將于今天下午正式登場,官方在發布會之前也已經正式給出了可升級的機型產品,這意味著這些機型會率先支持升級享用。這次的HarmonyOS 4.0支持
  • 一加Ace2 Pro真機揭曉 鈦空灰配色質感拉滿

    終于,在經過了幾波預熱之后,一加Ace2 Pro的外觀真機圖在網上出現了。還是博主數碼閑聊站曝光的,這次的外觀設計還是延續了一加11的方案,只是細節上有了調整,例如新加入了鈦空灰
  • 線程通訊的三種方法!通俗易懂

    線程通信是指多個線程之間通過某種機制進行協調和交互,例如,線程等待和通知機制就是線程通訊的主要手段之一。 在 Java 中,線程等待和通知的實現手段有以下幾種方式:Object 類下
  • 2023 年的 Node.js 生態系統

    隨著技術的不斷演進和創新,Node.js 在 2023 年達到了一個新的高度。Node.js 擁有一個龐大的生態系統,可以幫助開發人員更快地實現復雜的應用。本文就來看看 Node.js 最新的生
  • 三言兩語說透設計模式的藝術-單例模式

    寫在前面單例模式是一種常用的軟件設計模式,它所創建的對象只有一個實例,且該實例易于被外界訪問。單例對象由于只有一個實例,所以它可以方便地被系統中的其他對象共享,從而減少
  • 大廠卷向扁平化

    來源:新熵作者丨南枝 編輯丨月見大廠職級不香了。俗話說,兵無常勢,水無常形,互聯網企業調整職級體系并不稀奇。7月13日,淘寶天貓集團啟動了近年來最大的人力制度改革,目前已形成一
  • 網紅炒股不為了賺錢,那就是耍流氓!

    來源:首席商業評論6月26日高調宣布入市,網絡名嘴大v胡錫進居然進軍了股市。在一次財經媒體峰會上,幾個財經圈媒體大佬就“胡錫進炒股是否知道認真報道”展開討論。有
  • 華為HarmonyOS 4升級計劃公布:首批34款機型今日開啟公測

    8月4日消息,今天下午華為正式發布了HarmonyOS 4系統,在更流暢的前提下,還帶來了不少新功能,UI設計也有變化,會讓手機煥然一新。華為宣布,首批機型將會在
  • iQOO Neo8 Pro評測:旗艦雙芯加持 最強性能游戲旗艦

    【Techweb評測】去年10月,iQOO推出了一款Neo7手機,該機搭載了聯發科天璣9000+,配備獨顯芯片Pro+,帶來了同價位段最佳的游戲體驗,一經上市便受到了諸多用
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
美女精品在线| 夜夜嗨av一区二区三区中文字幕| 欧美日韩中文精品| 欧美日韩在线不卡一区| 国产精品每日更新在线播放网址| 国产乱子伦一区二区三区国色天香| 国产婷婷97碰碰久久人人蜜臀| 黄色一区二区三区四区| 亚洲日本欧美天堂| 亚洲欧美网站| 久久夜色精品| 欧美视频在线视频| 国产精品视频内| 一区二区三区在线高清| 亚洲欧洲一区| 午夜精品福利视频| 免费黄网站欧美| 国产精品成人一区| 伊人色综合久久天天| 艳妇臀荡乳欲伦亚洲一区| 香蕉av福利精品导航| 免费在线观看精品| 国产精品久久久一区麻豆最新章节| 国产综合亚洲精品一区二| 日韩一区二区精品视频| 久久大逼视频| 欧美日韩一区二区三区在线观看免| 国产日韩精品一区二区三区| 亚洲欧洲在线一区| 欧美在线高清视频| 欧美日韩国产成人在线| 国内精品一区二区三区| 亚洲桃色在线一区| 欧美刺激午夜性久久久久久久| 国产精品日产欧美久久久久| 亚洲激情网址| 久久精品av麻豆的观看方式 | 欧美精品999| 国产日韩精品一区观看| 亚洲卡通欧美制服中文| 久久精品在线观看| 欧美性生交xxxxx久久久| 亚洲国产一区二区在线| 久久er精品视频| 国产精品啊啊啊| 亚洲精品国产精品国自产观看| 久久成人精品视频| 欧美性开放视频| 亚洲欧洲在线免费| 久热精品视频在线| 国产亚洲午夜| 亚洲影视中文字幕| 欧美日本中文| 亚洲欧洲日韩综合二区| 欧美在线高清视频| 伊人一区二区三区久久精品| 国产女主播在线一区二区| 亚洲精品久久久久久下一站| 美女999久久久精品视频| 亚洲国产91精品在线观看| 亚洲精品欧美| 欧美jizz19性欧美| 欧美一区二区视频在线| 在线观看久久av| 国产真实乱子伦精品视频| 国产精品永久免费| 一区在线电影| 亚洲精品久久久久中文字幕欢迎你 | 老司机成人在线视频| 欧美日韩二区三区| 国产一区二区精品久久99| 亚洲日本激情| 欧美一二三视频| 久久久久久久999精品视频| 亚洲国产精品一区二区www| 在线一区二区三区四区五区| 亚洲视频网站在线观看| 国产精品日韩久久久久| 国产精品日韩欧美综合| 欧美午夜欧美| 欧美色偷偷大香| 欧美日韩在线一区二区三区| 欧美日韩一区二区免费视频| 久久久7777| 久久电影一区| 在线观看亚洲视频| 制服丝袜亚洲播放| 久久色在线播放| 国模套图日韩精品一区二区| 欧美在线www| 国产日韩av一区二区| 西瓜成人精品人成网站| 国产日韩欧美在线视频观看| 欧美在线观看视频一区二区三区 | 欧美日韩免费一区二区三区| 99精品国产在热久久婷婷| 欧美日韩免费看| 亚洲影院色无极综合| 国产美女精品免费电影| 欧美专区在线观看一区| 精品91久久久久| 牛人盗摄一区二区三区视频| 亚洲精品在线二区| 欧美日精品一区视频| 亚洲小说欧美另类婷婷| 国产欧美日韩视频一区二区| 久久精品视频在线| 亚洲国产99精品国自产| 欧美精品久久久久久久| 中文精品在线| 国产日韩欧美精品| 久久男人av资源网站| 亚洲人精品午夜| 国产精品久久999| 久久国产精品久久久| 亚洲黑丝一区二区| 国产精品v片在线观看不卡| 欧美亚洲综合网| 亚洲电影免费| 欧美午夜一区二区福利视频| 欧美一区日韩一区| 亚洲国产日韩综合一区| 欧美午夜性色大片在线观看| 欧美在线观看网站| 亚洲电影免费在线观看| 欧美日韩网址| 久久精品99| 亚洲免费黄色| 国产亚洲高清视频| 欧美大片第1页| 亚洲欧美综合| 亚洲国产一区二区在线| 国产精品拍天天在线| 美女久久一区| 亚洲综合第一页| 亚洲成人在线| 欧美日韩另类在线| 欧美在线你懂的| 亚洲精品在线观看免费| 国产午夜精品理论片a级大结局| 欧美大片一区二区| 欧美一区二区日韩一区二区| 亚洲日本激情| 韩国三级在线一区| 欧美日韩国语| 久久一二三国产| 午夜精品久久久久久久久久久| 亚洲啪啪91| 国内精品伊人久久久久av影院| 欧美日韩国产成人在线| 久久久之久亚州精品露出| 亚洲午夜高清视频| 最近看过的日韩成人| 国产欧美精品在线| 欧美日韩美女在线| 鲁大师影院一区二区三区| 午夜精品久久久久久久白皮肤 | 亚洲激情午夜| 国产午夜精品美女视频明星a级| 欧美国产一区二区| 久久久久久精| 亚洲欧美在线aaa| 日韩亚洲成人av在线| 在线观看国产成人av片| 国产欧美日韩一区| 欧美午夜不卡| 欧美激情综合五月色丁香| 久久久91精品国产| 亚洲欧美中文日韩v在线观看| 9人人澡人人爽人人精品| 亚洲第一色在线| 国语自产精品视频在线看| 国产精品视频在线观看| 欧美日韩亚洲激情| 欧美激情久久久| 免费一级欧美片在线观看| 久久国产成人| 午夜伦理片一区| 亚洲影院色无极综合| 中日韩午夜理伦电影免费| 99国产精品久久久久久久成人热 | 亚洲精品乱码久久久久久蜜桃麻豆| 狠狠爱综合网| 国产一区美女| 国产日韩av高清| 国产美女精品视频| 国产精品人人做人人爽人人添| 欧美日韩爆操| 欧美精品一区二区蜜臀亚洲| 欧美aⅴ一区二区三区视频| 久久亚洲欧美| 久久免费99精品久久久久久| 久久精品九九| 久久久精品国产一区二区三区 | 欧美国产日韩一区| 欧美高清不卡在线| 欧美电影免费| 老司机一区二区| 久久婷婷综合激情| 久久夜色精品国产欧美乱极品| 久久亚洲精品中文字幕冲田杏梨| 久久久久国产一区二区| 久久久水蜜桃| 麻豆乱码国产一区二区三区|