我正在開發(fā)一個必須執(zhí)行一些后臺工作的應(yīng)用程序。出于這個原因,我正在使用服務(wù)?,F(xiàn)在我想要實現(xiàn)的目標(biāo)是假設(shè)用戶開始后臺工作,當(dāng)工作正在加載時,用戶可以選擇最小化應(yīng)用程序或等到加載結(jié)束。加載結(jié)束后我想打開另一個活動?,F(xiàn)在我的問題假設(shè)用戶開始加載并最小化應(yīng)用程序,然后當(dāng)加載結(jié)束時用戶尚未返回到應(yīng)用程序然后如果我啟動屏幕而用戶甚至沒有在他的視圖中看到我的應(yīng)用程序那么用戶可能會被打斷與他的工作。所以我想要的是當(dāng)加載結(jié)束時,我只想在我的應(yīng)用程序?qū)τ脩艨梢姇r打開,如果應(yīng)用程序?qū)τ脩舨豢梢?,那么我想等到用戶返回并且只在用戶返回時打開返回 如果加載結(jié)束,我想打開屏幕?,F(xiàn)在我想的是我應(yīng)該有一個布爾值來跟蹤應(yīng)用程序是否對用戶可見。我onStop會將布爾值設(shè)置為 false,然后onStart將該值設(shè)置為 true。我將再次onStart檢查加載是否完成,如果是,我將打開屏幕。但是我想知道是否有更好的方法來實現(xiàn)這一點?如果是那么如何。我正在尋找更好的方法的原因是我想為我的應(yīng)用程序編寫一個干凈的代碼,這可能會避免錯誤和崩潰。
1 回答

明月笑刀無情
TA貢獻(xiàn)1828條經(jīng)驗 獲得超4個贊
這正是LiveData和RxJava所針對的場景。只有當(dāng)活動可見時,您的活動才會獲取數(shù)據(jù)。只有當(dāng)您的活動可用并且它具有生命周期感知能力時,您的Viwemodel才會向活動提供您的實時數(shù)據(jù)。如果您的應(yīng)用程序需要在用戶關(guān)閉您的應(yīng)用程序后繼續(xù)工作,即使用戶重新啟動您的應(yīng)用程序,您也可以考慮使用WorkManager 。它還帶有約束,可根據(jù)網(wǎng)絡(luò)、電池壽命優(yōu)化您的工作……并為您的 Viewmodel 提供實時數(shù)據(jù)以供使用。
添加回答
舉報
0/150
提交
取消