Android。为 locationListener 使用服务或应用程序 class

Android. Use service or application class for locationListener

我的任务是确定用户位置。我可以在 Application class 中创建 LocationListener。或者我可以使用服务。

LocationManager locationManager=(LocationManager)this.getSystemService(Context.LOCATION_SERVICE);
  LocationListener locationListener=new LocationListener(){
public void onLocationChanged(    Location location){
  dive.setLongitude(location.getLongitude());
  dive.setLatitude(location.getLatitude());
  mapHelper.setMapPosition(dive.getLatitude(),dive.getLongitude());
}
public void onStatusChanged(    String provider,    int status,    Bundle extras){
}
public void onProviderEnabled(    String provider){
}
public void onProviderDisabled(    String provider){
}};
 locationManager.requestLocationUpdates( LocationManager.NETWORK_PROVIDER,0,0,locationListener);
 locationManager.requestLocationUpdates( LocationManager.GPS_PROVIDER,0,0,locationListener);

我需要用什么来完成这个任务?服务或应用程序 class?该服务的优点和缺点是什么?应用的优缺点是什么class?

您永远不会使用该应用程序。您可能会使用 Activity。使用Activity比较方便,但是不能坚持到下一个activity。服务需要额外的样板文件并且不太容易访问数据,但它可以用于需要数据的多个活动。

如果您的应用需要获取实时位置信息,两者都可以使用。

MyApplication extends Application implements locationListener
MyService extends Service implements locationListener

因为应用的生命周期是最长的,所以可以在service.You中使用应用只需要关心如何将获取的数据传递给Activity(接口,broadcast. ..).