2013-07-25 210 views
8

我有一個服務,其中有4個全局靜態詮釋變量,我有一個BOOT COMPLETE和Call事件的接收器。我試圖做的是每當Call事件接收器執行時保存這4個變量,並在執行BOOT接收器時(當然,當我重新啓動手機時)檢索它們,但兩者都不工作..另一件事是共享首選項也是有用的當設備重新啓動時?下面Android共享首選項不起作用

SharedPreferences saved_values = this.getSharedPreferences(
       "com.example.app", Context.MODE_PRIVATE); 
    saved_values.edit().putInt("call", MyService.callcount); 
    saved_values.edit().putInt("callend",MyService.callendcount); 
    saved_values.edit().putInt("network",MyService.network_count); 
    saved_values.edit().putInt("ringing",MyService.ringingcount); 
    saved_values.edit().commit(); 

和檢索

 SharedPreferences saved_values = this.getSharedPreferences(
        "com.example.app", Context.MODE_PRIVATE); 
      MyService.callcount = saved_values.getInt("call", -10); 
      MyService.ringingcount=saved_values.getInt("ringing", -10); 
      MyService. network_count=saved_values.getInt("network", -10); 
      MyService.  callendcount=saved_values.getInt("callend", -10); 
+0

能否請您上傳BroadCastRecevier的代碼? – Vigbyor

+0

實際上,我正在接收器中啓動另一個新的意圖服務,並且我正在執行此操作。在Onhandleintent()函數中。 – Ateeq

回答

17

我用這個和它的工作對我來說。

爲了節省

SharedPreferences saved_values = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 
SharedPreferences.Editor editor=saved_values.edit(); 
    editor.putInt("count",count); 
      editor.putInt("foo",foo); 
    editor.commit(); 

和檢索

 SharedPreferences saved_values = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 

     count = saved_values.getInt("count", -1); 
+3

感謝您發表此內容。直接SharedPreferences沒有按規定工作。 – SQLiteNoob

11

該問題的代碼中給出的每次調用編輯時間()一個新的編輯器對象是created.You應該持有一個編輯器對象的實例,並執行所有的操作。

使用以下

 SharedPreferences saved_values = this.getSharedPreferences(
       "com.example.app", Context.MODE_PRIVATE); 
     SharedPreferences.Editor editor=saved_values.edit(); 
     editor.putInt("call", MyService.callcount); 
     editor.putInt("callend", MyService.callendcount); 
     editor.putInt("network", MyService.network_count); 
     editor.putInt("ringing", MyService.ringingcount); 
     editor.commit(); 
+2

其不同步的問題 – Ateeq