你的 CloseAppJobService 使用了 JobService,但 JobService 需要透過 JobScheduler 正確排程,而不是直接讓 WorkManager 處理。
解決方法
-
確保
JobScheduler取得有效的 Job ID,通常應該是1以上的整數。 -
確保
CloseAppJobService在AndroidManifest.xml註冊。 -
確保你的
JobService設定為android:permission="android.permission.BIND_JOB_SERVICE"。
完整的修正程式碼
1. 修改 CloseAppJobService.kt
2. 在 AndroidManifest.xml 註冊 JobService
在 <application> 標籤內新增:
3. 在 MainActivity.kt 或適當位置啟動 JobScheduler
調用方式:
為什麼這樣修改?
-
修正 Job ID 範圍錯誤
-
Job ID需要是有效的整數 (123是示範,實際可用 1 以上的數字)。 -
WorkManager的錯誤訊息可能來自於Job ID錯誤。
-
-
確保
JobService正確被系統執行-
透過
JobScheduler正確啟動CloseAppJobService。 -
setMinimumLatency(5 * 60 * 1000)確保應用程式 進入背景 5 分鐘後才關閉。
-
-
確保
AndroidManifest.xml設定正確-
android:permission="android.permission.BIND_JOB_SERVICE"是JobService必須的權限。
-
最終效果
-
當 App 進入背景時,5 分鐘後
JobService會強制關閉 App。 -
即使應用程式被系統凍結,JobScheduler 仍然能執行,確保應用程式結束。
沒有留言:
張貼留言