android - Android FusedLocationProviderClient 跨活动使用
问题描述
我在一个活动中开始位置更新,并在我的应用程序流中的后续活动中停止它们。
我使用静态方法创建了一个最终的 LocationUtilities 类[代码如下所示,其中包含相关部分],用于请求位置更新。我从互联网上的某个地方得到了这种模式,现在想知道我是否没有问题。这样,LocationCallback 可以在不同的活动中被引用。
我的困惑来自于使用启动活动的上下文调用 startLocationUpdates(),以及使用结束活动的上下文调用 stopLocationUpdates()。这是否正常工作?
此外,使用不同的活动上下文调用 getFusedLocationProviderClient。
这里有问题吗?
如果有问题,我可以将起始活动上下文保存在静态字段中并在 stopLocationUpdates() 中使用它而不是调用活动上下文吗?
当我移动到 UI 流中的其他 Activity 时,当我的起始 Activity 被销毁时,位置更新会发生什么情况?
请注意:为简洁起见,我省略了检查权限等的部分。我开始注意到我的应用程序中以位置更新为中心的奇怪动作,并想知道这是否是问题所在。它不是一直可重现的。如果我将 fusedLocationProviderClient 声明为静态字段,Studio 会抱怨内存泄漏。
private static LocationCallback locationCallback;
public static void startLocationUpdates(Context appContext) {
locationCallback = new myLocationCallback();
FusedLocationProviderClient fusedLocationProviderClient =
LocationServices.getFusedLocationProviderClient(appContext);
fusedLocationProviderClient.requestLocationUpdates(
locationRequest, locationCallback, Looper.getMainLooper())
}
public static stopLocationUpdates(Context appContext) {
FusedLocationProviderClient fusedLocationProviderClient =
LocationServices.getFusedLocationProviderClient(appContext);
fusedLocationProviderClient.removeLocationUpdates(locationCallback);
}
private static class myLocationCallback extends LocationCallback {
@Override
public void onLocationResult(LocationResult locationResult) {
: :
}
}
解决方案
推荐阅读
- python - 将python变量传递给powershell脚本
- python - 将列表格式化为仅包含“超级字符串”
- c# - Visual Studio 错误 CS0234 交互不起作用
- service-worker - Pwa 总是在快捷方式中显示镀铬标志
- typescript - 我不明白注入依赖是如何工作的。有没有人可以清楚地解释我
- html - 在列中对齐布局
- react-native - AWS Amplify Auth Login 从 React Native 上的 React Native Webview
- gson - 如何使 Gson 将值读取为字符串?
- azure-devops - 使 aws-sdk node_module 可用于我的 Azure DevOps 扩展
- android - 我们可以使用firebase控制台手动上传图片吗?