科尔多瓦长期运营的位置服务

时间:2015-02-05 06:16:51

标签: android cordova cordova-plugins long-running-processes

我很困惑应用程序何时进入后台以及应用程序在后台运行时的含义。

我正在尝试使用长时间运行的服务来检测位置更改。

plugin.xml中:

<service android:name="MyLocationService.java" />

MyLocationService.java

public MyLocationService extends Service implements LocationListener {

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        //arguments for requestUpdates defined elsewhere
        this.locationManager.requestUpdates(minTimeBetweenUpdates, minDistanceBetweenUpdates, myCriteria, this, null);
    }

    public void onLocationChanged(Location location) {
        if (/*rare condition*/) {
            PluginResult result = new PluginResult(PluginResult.Status.OK, "We made it!");
            result.setKeepCallback(true);
            MyPlugin.callbackContext.sendPluginResult(result);
        }
    }
}

MyPlugin.java

public class MyPlugin extends CordovaPlugin {

    public static CallbackContext callbackContext;

    public boolean execute(String action, JSONArray data, CallbackContext callbackContext) {
        Activity activity = this.cordova.getActivity();
        Intent myIntent = new Intent(activity, MyLocationService);
        MyPlugin.callbackContext = callbackContext;
        activity.startService(myIntent);
    }
}

我的问题是:

  1. onLocationChanged何时停止接收更新?
    我知道当我调用locationManager.removeUpdates时它会停止接收更新,但我想知道其他条件会导致它停止接收更新......也许当应用程序进入后台时?
  2. 我什么时候无法通过Cordova调用javascript回调?
  3. 是否有更好的方法可以获得长时间运行的服务,以便在必要时“唤醒应用程序”?

0 个答案:

没有答案