应用程序关闭时,不会调用onLocationChanged

时间:2014-03-30 12:18:50

标签: android locationmanager

我一直在网上搜索这个问题的答案,但到目前为止没有任何对我有用的东西。 我试图在后台获取位置更新。当" onLocationChanged"调用一个check方法,然后将发送或不发送通知。当我关闭我的应用程序时,问题是onLocationChanged似乎根本没有被调用。调用onLocationChanged的唯一时间是我重新打开我的应用程序。我希望我的应用程序不断检查位置变化。

使用以下代码:

public class MainActivity extends Activity implements LocationListener {

private LocationManager locationManager;
private String provider;
private Location location;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    createData();
    locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    provider = locationManager.getBestProvider(new Criteria(), false);
    locationManager.requestLocationUpdates(provider, 400, 1, this);
    location = locationManager.getLastKnownLocation(provider);
   .......
}

@Override
  protected void onResume() {
    super.onResume();
    locationManager.requestLocationUpdates(provider, 400, 1, this);
  }

  @Override
  protected void onPause() {
    super.onPause();
  }

  @Override
  public void onLocationChanged(Location location) { 
      if(newactiveplace(location))
          sendnotification();
}

任何人都可以。救命? 非常感谢。

1 个答案:

答案 0 :(得分:0)

您应该覆盖用户关闭活动时发生的情况。使用:

@Override
public void onBackPressed() {
   Intent i = new Intent(Intent.ACTION_MAIN);
   i.addCategory(Intent.CATEGORY_HOME);
   startActivity(i);
   //super.onBackPressed();
}

这样,当用户按下后退按钮时,它会将应用程序保留在后台,您仍然可以运行服务。

小心,因为有了位置更新,您将耗尽用户的电量,可能用户甚至不知道该应用正在运行。