2012-02-11 154 views
4

我的應用程序只有一個服務類(而不是活動),其中我保留了一個變量的值,這個變量是通過一種方法動態計算的。然後我需要保存該值以作進一步比較。 例如:保持變量值

class MyClass extends Service{ 

static int number1; 


private void Method(){ 
int number 2; 

/// some calculations for number2 /// 

if number2 != number1 { number1 = number2 } 

} 

我需要比較變量(數量1)到其他一些變量(數字2)我的應用程序已經計算。這很好,但是當Android操作系統殺死我的服務,並在某些意圖上啓動該服務時(比如說在電話重啓後),number1的值將丟失,我無法將其用於比較。 那麼該怎麼做呢?我想寫一個簡單的TXT文件,其中一個我可以在保存服務後保留number1的值,

還有其他方法嗎?

回答

3

最快的方法是將變量的值保存到SharedPreferences中並將其檢索以供以後使用。

例如:

public class Calc extends Activity { 
    public static final String PREFS_NAME = "MyPrefsFile"; 

    @Override 
    protected void onCreate(Bundle state){ 
     super.onCreate(state); 
     . . . 

     // Restore preferences 
     SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 
     boolean silent = settings.getBoolean("silentMode", false); 
     setSilent(silent); 
    } 

    @Override 
    protected void onStop(){ 
     super.onStop(); 

     // We need an Editor object to make preference changes. 
     // All objects are from android.context.Context 
     SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 
     SharedPreferences.Editor editor = settings.edit(); 
     editor.putBoolean("silentMode", mSilentMode); 

     // Commit the edits! 
     editor.commit(); 
    } 
} 

這個代碼是從android developer's page這是活動中獲得,但你可能在你的服務很容易通過改變它適應它

+0

謝謝隊友,那就是我需要的:)工作正常! – 2012-02-12 20:03:15

1

你得值保存到一個文件或數據庫作爲Android用戶通常監控服務和應用程序,並可以關閉該服務 所以 堅持它在數據庫中,以便以後當你的服務啓動,您可以檢查所保存的值。

+0

謝謝bo2bo2的答案,我使用SharedPreferences ,這很容易! – 2012-02-12 20:03:51