我刚刚开始了解Android小部件生命周期是如何工作的,而且似乎它几乎是事件驱动的(广播驱动的)。没有真正的持久会话;您的小部件在更新期间被唤醒,您需要更新小部件的视图。
我可以猜到这个问题的答案,但是我可以跟踪小部件中的用户位置吗?如果我理解生命周期正确,我在LocationRequest
类中注册的回调赢了“因为我使用的课程将被垃圾收集,所以很长时间没有工作。我唯一的选择是在更新期间获取一次该位置。
框架允许最多(或最小)30分钟的更新间隔。这是否意味着用户必须等待30分钟才能看到更新的位置?有没有解决方法?
感谢。
答案 0 :(得分:2)
您的小部件在更新期间被唤醒,您需要更新小部件的视图
我们欢迎您随时使用RemoteViews
更新应用小工具AppWidgetManager
。如果需要,更新机制只是一种安排定期更新的方法。
我可以在小部件中跟踪用户位置吗?
不直接。应用小部件是RemoteViews
;它没有逻辑。 AppWidgetProvider
是BroadcastReceiver
的子类,您无法在那里轻松执行异步,可能很长的操作。
我唯一的选择是在更新期间获取一次该位置。
没有。您唯一的可靠选项是启动服务并获取位置数据,根据需要更新应用小部件。
请注意,持续监控位置会耗尽电池耗电量,这也是Android 8.0 +上缩小后台位置更新的原因之一。