Android 保持变量值

Android 保持变量值,android,service,Android,Service,我的应用程序只有一个服务类(不是活动),在该类中,我保留通过一个方法动态计算的一个变量的值。然后我需要保存该值以便进一步比较。 例如: class MyClass extends Service{ static int number1; private void Method(){ int number 2; /// some calculations for number2 /// if number2 != number1 { number1 = number2 } } pub

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

class MyClass extends Service{

static int number1;


private void Method(){
int number 2;

/// some calculations for number2 ///

if number2 != number1 { number1 = number2 }

}
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();
    }
}
我需要将该变量(number1)与应用程序计算的其他变量(number2)进行比较。这很好,但当Android操作系统终止我的服务,并出于某种目的启动该服务时(比如在手机重启后),number1的值就丢失了,我无法用它进行比较。 那么怎么做呢?我想写一个简单的TXT文件,在终止服务后,我可以在其中保留number1的值


还有其他方法吗?

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

最快的方法是将变量的值保存在SharedReferences中,并检索它以供以后使用

例如:

class MyClass extends Service{

static int number1;


private void Method(){
int number 2;

/// some calculations for number2 ///

if number2 != number1 { number1 = number2 }

}
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();
    }
}

此代码取自用于活动的代码,但您可以通过更改它来轻松地在服务中修改它

谢谢,伙计,这正是我所需要的:)工作正常!谢谢你的回答,我使用了共享参考,这更简单!