私はAndroidが初めてです。センサーデータをログに記録するアプリケーションを開発しています。2 つのボタンを持つアクティビティがあります。ユーザーが開始ボタンを押すと、サービスが開始され、ユーザーが停止ボタンを押すまでセンサー データが記録されます。どのタイプのサービスを利用したいのかわからない。ローカル サービスとリモート サービスについて読みましたが、実際には違いがよくわかりませんでした。
私が今まで試したこと:
ローカル サービスを開始および停止する 2 つのボタンを含むアクティビティを作成しました。
//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"/>
うまく機能しますが、問題は、サービスを開始したアプリケーションを強制終了すると、このサービスが再起動し、以前にログに記録されたデータがすべて失われることです。ログに記録されたデータを失わないように、アプリケーションが強制終了された場合でも、サービスをスムーズに実行し、実行し続けるには、何を使用すればよいですか?