WorkManager的問題
后臺周期性執(zhí)行一個定時任務(wù),可能幾分鐘计济,或者幾秒园细,使用time task
唆垃,countdownTime
等無法避免應(yīng)用在后臺在某些設(shè)備上不執(zhí)行的問題,但是使用workmanager
能夠大大增大我們的滲透率趁猴,總結(jié)一些過程中的問題刊咳。
1.如何使用workmanager
來周期執(zhí)行幾分鐘的任務(wù)
官方文檔已經(jīng)說明了PeriodicWorkReques
t的最低間隔時間是15min
. 基于這個問題我基于OneTimeWorkRequest
實(shí)現(xiàn)周期任務(wù),也很簡單就是在OneTimeWorkRequest
任務(wù)執(zhí)行完畢新建一個OneTimeWorkRequest
任務(wù)儡司,這里的時間間隔是沒有限制的娱挨。
2.多個workmanager
重復(fù)執(zhí)行的問題
這個是由于我們的任務(wù)已經(jīng)加入work隊列了枯夜,沒有執(zhí)行APP就被殺死了洒缀,app重新啟動任務(wù)的時間到了,這個時候就會導(dǎo)致任務(wù)多次重復(fù)執(zhí)行隘擎。解決辦法就是基于自己的需求要在合適時機(jī)cancel掉我們的任務(wù)就好了碉碉,例如cancelAllWorkByTag
或者cancelAllWork
柴钻。
后面有空會考慮的研究workmanger內(nèi)部的實(shí)現(xiàn)邏輯