3 回答

TA貢獻1797條經(jīng)驗 獲得超4個贊
作出這樣一個全局變量private boolean mIsInForegroundMode;和分配false的價值onPause()和true價值onResume()。
樣例代碼:
private boolean mIsInForegroundMode;
@Override
protected void onPause() {
super.onPause();
mIsInForegroundMode = false;
}
@Override
protected void onResume() {
super.onResume();
mIsInForegroundMode = true;
}
// Some function.
public boolean isInForeground() {
return mIsInForegroundMode;
}

TA貢獻1719條經(jīng)驗 獲得超6個贊
這是一篇很老的文章,但仍然很有用。以上接受的解決方案可能有效,但有誤。正如Dianne Hackborn寫道:
這些API并不是應(yīng)用程序用來建立UI流程的基礎(chǔ),而是用于向用戶顯示正在運行的應(yīng)用程序或任務(wù)管理器等。
是的,在內(nèi)存中有一個列表保存這些事情。但是,它在另一個進程中處于關(guān)閉狀態(tài),由與您的線程分開運行的線程進行管理,而不是您可以依靠的東西(a)及時看到正確的決定,或者(b)在返回時保持一致。加上關(guān)于“下一步”活動去的決定總是在切換發(fā)生的那一刻完成,直到直到那個確切的點(活動狀態(tài)被短暫鎖定以進行切換),我們才能做出決定真的知道接下來會發(fā)生什么。
并且這里的實現(xiàn)和全局行為不能保證將來保持不變。
正確的解決方案是實施:ActivityLifeCycleCallbacks。
這基本上需要一個應(yīng)用程序類,并且可以在其中設(shè)置處理程序以標識您在應(yīng)用程序中的活動狀態(tài)。
- 3 回答
- 0 關(guān)注
- 1333 瀏覽
添加回答
舉報