檢測應用程序是否處於前景的原因有很多。例如,作爲GCM/C2DM推送通知的觸發器,很多應用程序在執行應用程序前臺和後臺的不同行爲時都會有很好的理由。 其他原因可能是 - 打擊耗費寶貴資源的服務,例如查詢後臺任務中的服務器。確定是否在前臺應用程序 - 是否皺眉?
只要是明確的:定義(在我看來)的後臺程序是:
應用程序,它沒有它的活動被調用的方法onStart()
,卻沒有援引onStop()
方法。這是因爲活動僅在當時在其生命週期中對用戶可見。
從另一方面 -
似乎是谷歌不希望應用到home鍵的反應(這不是API的一部分)
反應到
onBackPressed()
上「根/主「活動作爲離開的指示器Activity
當然不是好主意(因爲很多用戶使用主頁按鈕,而不是後退按鈕)API中沒有方法允許de termine如果應用程序是前景(根據我的定義..)
,如果我沒有錯過API的東西,它是真正的情況 - 爲什麼沒有爲什麼容易確定該應用程序是前景還是沒有???? !!!!
什麼,我知道我可以做以確定是否前臺的應用在這個線程描述 - How to detect when an Android app goes to the background and come back to the foreground
但@Emil說 - 它需要特殊的權限,或者需要一些棘手的邏輯的,其速度非常快成爲問題保持,它聞起來像壞的做法(雖然這是我在做什麼,現在,因爲我沒有更好的主意......)
我的問題基本上都是:
有沒有這樣的API方法從好的理由?
考慮到應用程序是否爲前景是一種不好的方法?
是否有任何其他方式知道應用程序是否爲前景?
你的回答確實在我的腦海中有所作爲......我沒有想到將有序廣播作爲第二種情況的解決方案。對於這種情況看起來很完美。關於第一種情況 - 我不熟悉 - onUserLeaveHint()方法。很高興知道它存在,但正如你所說 - 它仍然沒有涵蓋所有..靜態變量表明開始和不停止的活動的數量是我在做什麼,並猜測在你的建議後,我將與此生活在一起解決方案沒有感覺它這樣一個不好的解決方案.. :) –