我是Android的新手。我正在开发一个记录传感器数据的应用程序。我有一个带有两个按钮的活动。当用户按下开始按钮时,我想要启动一个服务,并在用户按下停止按钮之前记录传感器数据。我不确定要使用哪种类型的服务。我读到了本地服务和远程服务的区别,但我并没有完全理解。
我到目前为止尝试过的:
我创建了一个带有两个按钮的活动来启动和停止本地服务:
//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"/>
它运行良好,但问题在于当我终止启动服务的应用程序时,此服务会重新启动并且会失去先前记录的所有数据。为了拥有一个平稳运行且即使应用程序被终止也能继续运行以不丢失任何已记录数据的服务,请使用什么?
android:process
属性,设置中的服务仍然显示为重新启动。 - duncanportelli