我一直在网上搜索这个问题的答案,但到目前为止没有任何对我有用的东西。 我试图在后台获取位置更新。当" 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();
}
任何人都可以。救命? 非常感谢。
答案 0 :(得分:0)
您应该覆盖用户关闭活动时发生的情况。使用:
@Override
public void onBackPressed() {
Intent i = new Intent(Intent.ACTION_MAIN);
i.addCategory(Intent.CATEGORY_HOME);
startActivity(i);
//super.onBackPressed();
}
这样,当用户按下后退按钮时,它会将应用程序保留在后台,您仍然可以运行服务。
小心,因为有了位置更新,您将耗尽用户的电量,可能用户甚至不知道该应用正在运行。