電話がオフになり、再起動したとき。共有設定に関するデータを保存したいと考えています。これを onDestroy サービスで実行したいと考えています。しかし、電話を再起動したり、電源を入れ直したりすると、保存されていないようです。これが私のやり方です。繰り返しますが、これはサービスです。
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
preferences = getSharedPreferences(pref_data, Context.MODE_PRIVATE);
driverPassword = preferences.getString("driverPassword","");
carrierId = preferences.getString("carrierId","");
cctid = preferences.getString("CCTID","");
shipment = preferences.getString("shipment","");
try
{
JSONObject shipmentObject = new JSONObject(shipment);
shipmentID = shipmentObject.getString("ShipmentId");
}
catch(Exception e)
{
}
powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,
"MyWakeLock");
handler.removeCallbacks(sendWakeLock);
handler.postDelayed(sendWakeLock, 1000); // 1 second
Log.w("onStart", "onStart");
return Service.START_NOT_STICKY;
}
@Override
public void onDestroy(){
super.onDestroy();
Log.w("onDestroy", "onDestroy");
handler.removeCallbacks(sendWakeLock);
SharedPreferences.Editor editor = preferences.edit();
editor.putString("isDriverLogin", "True");
editor.putString("driverPassword", driverPassword);
editor.putString("carrierId", carrierId);
editor.putString("CCTID", cctid);
editor.putString("shipment", shipment);
editor.putString("isAccepted", "");
editor.putString("newshipment", "");
editor.putString("isRemoved", "True");
editor.commit();
}
注: アクティビティの onDestroy メソッドに他の重要なアクティビティがあり、使用したくありません。電話が再起動された場合にサービスに発生するイベントを利用したい。Service.START_NOT_STICKY; も設定しました。電話が再起動またはオフになったときに onDestroy が実行されることを期待しています。電話の再起動時にサービスでイベントをキャッチする方法、または電話の再起動時にサービスが停止する方法についてのアイデアはありますか?