我混淆了 Service 和 BroadcastReceiver。我正在开发基于位置的应用程序。在此,我想在用户的位置发生重大变化(例如 10 米)时将用户的位置存储到数据库中。
我正在为它使用 LocationListener,它工作正常。但我的困境是:在哪里编写 onLocationChanged() 方法 - 在 BroadcastReceiver 的 onReceive() 方法中还是在服务中?
如果我使用的是 Service,那么我应该在 Service 的哪个方法中编写下面的代码?
这是我的位置监听器:
LocationManager locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
LocationListener locationListener = new LocationListener() {
public void onLocationChanged(Location location) {
if(location != null){
//Code to populate location-data into the database table.
}
public void onStatusChanged(String provider, int status, Bundle extras) {}
public void onProviderEnabled(String provider) {}
public void onProviderDisabled(String provider) {}
};
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 5, 10, locationListener);
任何人都可以建议我实现它的更好方法是什么?我已经阅读了所有关于 Service 和 BroadcastReceiver 的 Android 开发者文档,但我仍然无法区分它们的用法?
最佳答案
这取决于你的目的。如果您想在后台捕获位置,请在服务中使用。
BroadcastReciever 的 onReceive 方法只会在您注册接收什么 Action 时调用。
如果你想在前台做,你可以简单地在 Activity 中使用它。但是当您的 Activity 关闭时,您将无法获取这些位置。
因此,您可以根据自己的功能来决定。
关于android - 什么是经常获取和存储位置更好 - 服务或广播接收器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12974600/