fra*_*acz 4 android location memory-leaks locationlistener
根据找到用户位置的示例应用程序,监听活动中的位置更改是个好主意:
class MyActivity extends Activity implements LocationListener {
@Inject
private LocationManager locationManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
}
@Override
public void onLocationChanged(Location location) {
// do something with location
}
// ...
}
Run Code Online (Sandbox Code Playgroud)
但是,我不确定.当配置发生更改时,我的活动将被销毁并重新创建,下次将自己注册为侦听器.对旧活动的引用是在LocationManager中进行的,不是吗?
如果我提取LocationListener
到单独的对象,我仍然有如何通知当前活动有关新位置的问题(不一定与请求活动相同).
有没有什么共同的模式来解决这个问题?
在这个例子中,您还有另一个问题:您的GPS聆听器将始终工作并将耗尽电池.
更好的做法是:
1)将LocationListener注册到Activity中 onStart()
2)将LocationListener移除到Activity中 onStop()
这将解决这两个问题.
如果您需要应用程序跟踪用户在后台的位置(例如,GPS跟踪器),请使用Service
(http://developer.android.com/reference/android/app/Service.html)
归档时间: |
|
查看次数: |
3927 次 |
最近记录: |