我有一个App Widget,它提供的数据取决于用户的当前位置。
当前,我的解决方案如下:
LocationUpdatesService
[扩展Service
],它在onCreate()
中注册位置更新,并在onDestroy()
中取消注册位置更新。添加小部件或启动手机后,便会启动该服务(如果尚未运行)。PendingIntent
注册位置更新,该广播会导致LocationUpdatesBroadcastReceiver
[扩展BroadcastReceiver
]处理广播。这是最好的解决方案/概念吗?我不这么认为,因为我发现此后台服务已启动,注册了位置更新,并在几分钟后被系统销毁了,即使它是START_STICKY!我认为它并没有重新创建-可能比我测试的时间晚。
另一个问题是,我从上下文中使用startService
来启动后台服务,如果启动了手机,则会导致IllegalStateException
,因为不得在Android O上在后台启动服务。< / p>
真的很期待您的帮助和提示!