2012-02-11 137 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