保持变量值

时间:2012-02-11 13:33:36

标签: android service

我的应用程序只有一个服务类(非活动),其中我保留了一个通过一种方法动态计算的变量的值。然后我需要保存该值以进行进一步比较。 例如:

class MyClass extends Service{

static int number1;


private void Method(){
int number 2;

/// some calculations for number2 ///

if number2 != number1 { number1 = number2 }

}

我需要将该变量(number1)与我的应用程序计算出的其他变量(number2)进行比较。这很好用,但是当Android操作系统杀死我的服务,并在某些意图上启动该服务时(假设在电话重启后),number1的值丢失了,我无法用它进行比较。 那怎么办呢?我想写一个简单的TXT文件,其中一个我可以在杀死服务后保留number1的值,

还有其他方法吗?

2 个答案:

答案 0 :(得分: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,适用于活动,但您可以通过更改来轻松地在服务中对其进行修改

答案 1 :(得分:1)

您必须将值保存到文件或数据库,因为Android用户通常会监控服务和应用程序,并可以关闭服务 所以 将其保留在数据库中,以便稍后启动服务时,您可以检查保存的值。