2013-10-01 22 views
0

当手机关机并重新启动时。我想在我的共享首选项中存储一些数据。我想在我的serivce onDestroy上做到这一点。但是,当我重新启动手机或将其关闭并再次打开时,它似乎并未储存。这是我如何做到的。再次,这是一项服务。在设备重启时在服务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(); 
} 

注意:我对我的activity的onDestroy方法有其他重要的活动,我不想使用它。如果手机重新启动,我想利用发生在我的服务中的事件。我还设置了Service.START_NOT_STICKY;希望当手机重新启动或关闭时,它会执行我的onDestroy。当我重新启动手机时重新启动手机或我的服务停止时,如何在我的服务中捕捉事件的任何想法?

回答

0

在新版本中,服务将具有以下事件触发:

onCreate() 
Followed by... 

int onStartCommand(Intent intent, int flags, int startid) 

//确定如果我的一个服务正在运行

public static boolean isMyServiceRunning(Context context, String servicename) { 
    ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); 
    for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) { 
     if (servicename.equals(service.service.getClassName())) { 
      return true; 
     } 
    } 
    return false; 
} 
+0

我真的不得到我怎么可能对我的情况实施这一点。一旦我的服务被销毁,我想存储值。如果我重新启动手机,如何检查我的服务是否正在运行? – ljpv14

相关问题