相关疑难解决方法(0)

如何在Android 8.0中正确更新小部件 - Oreo - API 26

假设我有一个将targetSDKVersion设置为26的应用程序的小部件.此小部件需要100毫秒到10秒才能更新.大部分时间都在1s以下.在Android O之前,如果在我的AppWidgetProvider上调用了onUpdate(),我可以启动后台服务来更新这个小部件.但是,如果您尝试该行为,Android O将返回IllegalStateException.启动前台服务的显而易见的解决方案似乎是一种极端的措施,可以在99%的时间内在10秒以内完成.

可能的解决方案

  • 启动前台服务以更新窗口小部件.用户通知会在10s内消失.
  • 使用JobScheduler尽快安排作业.您的小部件可能会或可能不会更新一段时间.
  • 尝试在广播接收器中完成工作.锁定任何其他应用程序的UI线程.呸.
  • 尝试在小部件接收器中工作.锁定任何其他应用程序的UI线程.呸.
  • 滥用GCM以运行后台服务.很多工作和感觉hacky.

我个人并不喜欢上述任何一种解决方案.希望我错过了一些东西.

(更令人沮丧的是,我的应用程序已经被系统调用onUpdate()加载到内存中.我没有看到如何将我的应用程序加载到内存中以调用onUpdate(),但后来没有给我的应用程序1s更新小部件UI线程正在为任何人节省电池寿命.)

multithreading android widget background-process android-8.0-oreo

30
推荐指数
2
解决办法
4812
查看次数