我有这种方法可以管理我的位置:
undefined reference to 'pthread_create'
但是我希望MainActivity关闭时可以运行此方法。我读到这件事,有两种方法可以做到这一点:使用服务或使用onStop方法。
我更喜欢第二种方法,使用onStop方法,但是我不知道如何在onStop方法中调用onLocationChanged。
答案 0 :(得分:2)
我希望这可以对您有所帮助。
在Android中,有位置管理器,它提供对系统位置服务的访问。
您可以使用此类触发onLocationChanged
事件。
LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
// Get the best provider for the criteria
Criteria criteria = new Criteria();
criteria.setPowerRequirement(Criteria.POWER_LOW);
criteria.setAccuracy(Criteria.ACCURACY_FINE);
String bestprovider = locationManager.getBestProvider(criteria,false);
locationManager.requestLocationUpdates(bestprovider,0, 0, this);
如果您在onStop
方法中插入某些代码,则会触发onLocationChanged
事件。
答案 1 :(得分:1)
覆盖您的onStop方法并以这种方式获取用户的最后一个已知位置
fusedLocationClient.lastLocation
.addOnSuccessListener { location : Location? ->
// Got last known location. In some rare situations this can be null.
}
请参阅此链接以获取更多详细信息https://developer.android.com/training/location/retrieve-current,因为您已经在onSuccessListener的回叫下获得了用户的位置,您可以将该位置更新到Firebase数据库/服务器
注意,根据您的要求,您可以在主线程或其他线程上运行此代码