你遇到的問題主要有兩個:
-
缺少權限 (
android.permission.RECEIVE_BOOT_COMPLETED),導致setPersisted(true)無法運作。 -
API 兼容性問題,
getSystemService(JobScheduler::class.java)需要 API 23 以上,但你的minSdkVersion是 21。
解決方案
✅ 1. 添加 RECEIVE_BOOT_COMPLETED 權限
在 AndroidManifest.xml <manifest> 標籤內 加入:
並在 <application> 標籤內 註冊 BootReceiver:
✅ 2. 創建 BootReceiver.kt
新增一個 BootReceiver 來確保手機重開機後,仍能排程 JobScheduler:
✅ 3. 修改 scheduleAppCloseJob()
因為 getSystemService(JobScheduler::class.java) 在 API 23+ 可用,所以我們要做兼容處理:
✅ 4. 確保 CloseAppJobService.kt 正確
完整流程
-
App 進入背景後,5 分鐘後自動關閉
-
手機重新啟動後,仍會排程自動關閉 App
-
適配
minSdkVersion 21,不會導致getSystemService崩潰 -
解決
setPersisted(true)需要權限的問題
現在,你的 App 進入背景 5 分鐘後,就會自動關閉,下次點開時一定會重新啟動! 🎯
沒有留言:
張貼留言