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
    }
    // ...
}
但是,我不确定.当配置发生更改时,我的活动将被销毁并重新创建,下次将自己注册为侦听器.对旧活动的引用是在LocationManager中进行的,不是吗?
如果我提取LocationListener到单独的对象,我仍然有如何通知当前活动有关新位置的问题(不一定与请求活动相同).
有没有什么共同的模式来解决这个问题?
在这个例子中,您还有另一个问题:您的GPS聆听器将始终工作并将耗尽电池.
更好的做法是:
1)将LocationListener注册到Activity中 onStart()
2)将LocationListener移除到Activity中 onStop()
这将解决这两个问题.
如果您需要应用程序跟踪用户在后台的位置(例如,GPS跟踪器),请使用Service(http://developer.android.com/reference/android/app/Service.html)
| 归档时间: | 
 | 
| 查看次数: | 3927 次 | 
| 最近记录: |