0

電話がオフになり、再起動したとき。共有設定に関するデータを保存したいと考えています。これを 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 が実行されることを期待しています。電話の再起動時にサービスでイベントをキャッチする方法、または電話の再起動時にサービスが停止する方法についてのアイデアはありますか?

4

1 に答える 1