java - 如何實(shí)現(xiàn)精準(zhǔn)的定時(shí)執(zhí)行任務(wù)?
問(wèn)題描述
我想用服務(wù)實(shí)現(xiàn)一個(gè)每天定時(shí)(23:59)執(zhí)行一段代碼(簽出,GET方式向服務(wù)器提交,能不開(kāi)activity就不開(kāi)activity)的功能,用的TimerTask,Handler,但是這個(gè)挺不靠譜的,熄屏情況下基本上不起作用。
后來(lái)有聽(tīng)說(shuō)AlarmManger、JobScheduler,看了看文檔,好像是專(zhuān)門(mén)用來(lái)開(kāi)Activity的,請(qǐng)問(wèn),我該使用怎樣的邏輯來(lái)完成自動(dòng)簽出這一動(dòng)作?
問(wèn)題解答
回答1:AlarmManger 沒(méi)有說(shuō)是專(zhuān)門(mén)用來(lái)開(kāi)Activity,他可以開(kāi)啟 Broadcast,Service,Activity,具體看你構(gòu)建定時(shí)器的時(shí)候如何實(shí)例化Intent。據(jù)我所知,AlarmManger針對(duì)不同手機(jī),發(fā)起鬧鐘的時(shí)間會(huì)有誤差,不精準(zhǔn),尤其是小米機(jī)器,這可能是硬件時(shí)鐘的問(wèn)題了。其他的不太了解。僅供參考。
回答2:Android管控越來(lái)越嚴(yán)格了, 還是乖乖用JobScheduler吧, JobScheduler的設(shè)計(jì)初衷就是為了合理利用手機(jī)資源的.
相關(guān)文章:
1. 在mybatis使用mysql的ON DUPLICATE KEY UPDATE語(yǔ)法實(shí)現(xiàn)存在即更新應(yīng)該使用哪個(gè)標(biāo)簽?2. mysql - 數(shù)據(jù)庫(kù)建字段,默認(rèn)值空和empty string有什么區(qū)別 1103. mysql - 這種分級(jí)一對(duì)多,且分級(jí)不平衡的模型該怎么設(shè)計(jì)表?4. Navicat for mysql 中以json格式儲(chǔ)存的數(shù)據(jù)存在大量反斜杠,如何去除?5. mac OSX10.12.4 (16E195)下Mysql 5.7.18找不到配置文件my.cnf6. mysql mysql_real_escape_string() 轉(zhuǎn)義問(wèn)題7. 新人求教MySQL關(guān)于判斷后拼接條件進(jìn)行查詢(xún)的sql語(yǔ)句8. mysql - 千萬(wàn)數(shù)據(jù) 分頁(yè),當(dāng)偏移量 原來(lái)越大時(shí),怎么優(yōu)化速度9. MySQL FOREIGN KEY 約束報(bào)錯(cuò)10. mysql - 數(shù)據(jù)庫(kù)表中,兩個(gè)表互為外鍵參考如何解決
