我正在查看如何知道我的應用程序是處於前景還是後臺。我見過兩種可能的解決方案,但我不確定哪一種更好(如果有更好的一種)。檢查應用程序是否在前臺的最佳方法
解決方案1: 在我的應用程序類創建兩個計數器:
private int mResumedActivities = 0;
private int mPausedActivities = 0;
,並增加各的onResume /的onPause每個計數器,所以我可以檢查,如果應用程序是在後臺爲:
public boolean isInBackground() {
return mPausedActivities >= mResumedActivities;
}
解決方案2: 在我的應用程序類中創建兩個布爾值: private boolean isAppResumed = false; private boolean isAppInForeground = false;
,並在每個的onResume /的onPause更新isAppResumed和,每個的onResume設置isAppInForeground和,每個onPaused觸發與延時處理程序時,如果之後的幾毫秒的應用程序仍然暫停,然後更新isAppInForeground爲真。
我認爲第一個解決方案更簡單,但我不喜歡有兩個計數器可能會永遠遞增。此外,首先調用onPause,然後調用onResume,所以應該會有幾毫秒的時間,應用程序可能會認爲這是在前臺,但實際上它不是。 你覺得呢?
預先感謝您!
那麼你究竟需要這個值?通常情況下,普通開發者如何做到這一點,無論他想要知道應用程序在前臺中的哪個活動/片段,都會引入一個名爲isAcitivtyForeground或isFragmentForeground的新片段/活動變量,並在onPause中將其設置爲false,並在onResume中將其設置爲false – Bhargav
[檢查Android應用程序是否在前景?](http://stackoverflow.com/questions/8489993/check-android-application-is-in-foreground-or-not) – Strider
我想檢查從另一個服務或單身,完全獨立於片段/活動。 – FVod