Xan*_*Xan 7 android deprecated intentservice android-8.0-oreo
有时在我的应用程序中,我需要在后台重复执行某些操作(每X小时).
最高API 25我使用:
AlarmManager 使用setInexactRepeating(尊重电池)WakefulBroadcastReceiver 有足够的时间做所有的工作IntentService 在后台线程中做所有事情在API 26所有这一切都被弃用或限制,并建议使用JobScheduler带JobService代替.
问题是JobService在主线程中运行.
我想在AsyncTask里面使用JobService并调用JobService.jobFinished内部onPostExecute
这是正确的方法吗?
在 API 26 上,所有这些都被弃用或受限
AlarmManager在 Android 8.0、IIRC 中没有改变。IntentService在 Android 8.0 中也没有改变。但是,您需要将其IntentService设为前台服务并使用getForegroundService() PendingIntent.
问题是 JobIntentService 在主线程中运行。
onHandleWork()在后台线程上调用,适用于 Android 8.0+ 和 8.0 之前的设备。我使用了我的这个示例应用程序,添加了日志语句来记录当前线程 ID enqueueWork()(在主应用程序线程上调用)和onHandleWork(). 它们是不同的线程 ID,因此它们是不同的线程。
这是正确的方法吗?
不,只需在onHandleWork().
小智 5
您可以使用支持库26的JobIntentService,该库具有IntentService的确切工作流程。对于Oreo之前的设备,JobIntentService将使用旧的IntentService。JobIntentService类依赖于Android的JobScheduler API。
有关更多信息, 请https://developer.android.com/reference/android/support/v4/app/JobIntentService.html
| 归档时间: |
|
| 查看次数: |
5948 次 |
| 最近记录: |