2012-02-11 9 views
4

私のアプリケーションには、1つのメソッドを通じて動的に計算される1つの変数の値を保持するサービスクラス(アクティビティではない)が1つしかありません。それから私はさらに比較するためにその値を保存する必要があります。たとえば :変数値を保持する

class MyClass extends Service{ 

static int number1; 


private void Method(){ 
int number 2; 

/// some calculations for number2 /// 

if number2 != number1 { number1 = number2 } 

} 

私は自分のアプリケーションを計算していることを他のいくつかの変数(数値2)にその変数(番号1)を比較する必要があります。これはうまくいっていますが、Android OSがサービスを停止して何らかの意図でサービスを開始すると(電話の再起動後に)、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

おかげで、まさに私が必要としていたものです:)作業は大丈夫です! –

1

あなたは、Androidユーザーは通常 がそう がデータベースに永続化サービスをサービスとアプリケーションを監視し、閉じることができますよう、あなたのサービスが開始されたときに、後であなたが保存された値を確認することができ、ファイルやデータベースに値を保存する必要があります。

+0

それを変更することにより、簡単にあなたのサービスでそれを適合させることができるあなたは答えをbo2bo2ありがとう、私はSharedPreferencesを使用しました、それは簡単です! –

関連する問題