java - Java Android:获取用户位置并发如何工作?
问题描述
我是 Java 和 Android 开发的新手。任务是获取用户的位置(已到达),我在变量“lat”中得到了 50.28.. 的结果, 但 就我试图在函数 OnSuccess之外打印此变量而言,我得到的值为 null。
由于缺乏知识,我只能假设问题是同步的,因为 OnSuccess 需要更多时间来运行,并且直到打印文本的那一刻它仍未初始化。但是我不确定我是否正确理解了这个问题,并想要求对其工作原理进行简短解释。
如何在我的程序中进一步使用 OnSuccess 的结果?
FusedLocationProviderClient fusedLocationProviderClient;
fusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(mainActivity);
Double lat = null; // variable for storing latitude
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
{
/** If we have permission -> get location */
if(mainActivity.getApplicationContext().checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED)
{
// get the location
fusedLocationProviderClient.getLastLocation()
.addOnSuccessListener(new OnSuccessListener<Location>() {
@Override
public void onSuccess(Location location) {
if(location != null)
{
lat = location.getLatitude(); // = 50.28...
}
}
});
}
}
binding.lat.setText(String.valueOf(lat)); // = null
解决方案
推荐阅读
- spring-boot - 防止 spring-boot-starter-oauth2-client 请求 IDP
- sql-server - SSRS - 在没有值的柱形图上显示缺少的轴?
- qt - QML-Items 的独立维度
- c# - JSON 属性名称作为属性的整个 JSON 路径
- quarkus - 我试图从 Quarkus-bom 中排除某些依赖
- sql - 如何将 Google 表格(通过查询功能)数据向右移动一列并在左侧添加一个常量字符串?
- flask - 烧瓶石墨烯上传多个文件的正确方法
- cmake - 尽管启用了 POSITION_INDEPENDENT_CODE 标志,但使用 -fPIC 重新编译时出现错误
- docker - laradock 上的 Elasticsearch “laradock_elasticsearch_1 exited with code 1”错误
- c# - 创建线性二维数组的子数组