我的应用程序只有一个服务类(非活动),其中我保留了一个通过一种方法动态计算的变量的值。然后我需要保存该值以进行进一步比较。 例如:
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的值,
还有其他方法吗?
答案 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用户通常会监控服务和应用程序,并可以关闭服务 所以 将其保留在数据库中,以便稍后启动服务时,您可以检查保存的值。