我是安卓新手。我正在开发一个记录传感器数据的应用程序。我有一个带有两个按钮的活动。当用户按下开始按钮时,我希望启动服务并记录传感器数据,直到用户按下停止按钮。我不确定我想使用哪种类型的服务。我阅读了有关本地服务与远程服务的信息,但我并没有真正理解它们的区别。
我到目前为止所尝试的:
我创建了一个带有两个按钮的活动,用于启动和停止本地服务:
//Start Service
startService(new Intent(this, MyService.class));
//Stop Service
stopService(new Intent(this, MyService.class));
我还创建了一个onStartCommand()
开始记录传感器数据的粘性服务:
public int onStartCommand(Intent intent, int flags, int startId) {
mSensorManager.registerListener(this, accelerometer,
SensorManager.SENSOR_DELAY_FASTEST);
mSensorManager.registerListener(this, magnetometer,
SensorManager.SENSOR_DELAY_UI);
mSensorManager.registerListener(this, lightSensor,
SensorManager.SENSOR_DELAY_UI);
Toast.makeText(this, "Service Started", Toast.LENGTH_LONG).show();
return Service.START_STICKY;
}
AndroidManifest.xml:
<service android:name=".MyService" android:enabled="true" android:process=":HelloSensors_background"/>
它运行良好,但问题是当我终止启动该服务的应用程序时,该服务重新启动并丢失所有以前记录的数据。我应该使用什么才能使服务平稳运行并在应用程序被终止时继续运行,以免丢失任何记录的数据?