AppWidgetProvider - 跟踪小部件中的用户位置

AppWidgetProvider - Tracking User Location in a Widget

我才刚刚开始了解 Android 小部件生命周期是如何工作的,它似乎几乎是事件驱动的(广播驱动的)。没有真正的持久会话;您的小部件在更新期间被唤醒,您需要更新您的小部件的视图。

我可以猜到这个问题的答案,但是 我可以在小部件中跟踪用户位置吗? 如果我正确理解了生命周期,我在 [=10] 中注册的回调=] class 不会工作很长时间,因为我使用的 class 将被垃圾收集。我唯一的选择是在更新期间获取一次位置。

框架允许最大(或最小)30 分钟的更新间隔。这是否意味着用户必须等待 30 分钟才能看到更新的位置?有什么解决方法吗?

谢谢。

your widget is woken up during the update and you are expected to update the views of your widget

欢迎您随时使用 AppWidgetManager 更新应用程序小部件的 RemoteViews。更新机制只是一种安排定期更新的方式,如果需要的话。

can I track user location in a widget?

不直接。应用程序小部件是 RemoteViews;它没有逻辑。 AppWidgetProviderBroadcastReceiver 的子类,您无法轻松地在其中执行异步的、可能很长的操作。

My only option is to get the location once during the update.

没有。您唯一可靠的选择是启动服务并让它获取位置数据,根据需要更新应用小部件。

请注意,持续监控位置会消耗电池电量,这也是 Android 8.0+ 减少后台位置更新的原因之一。