永久存储实例变量

时间:2018-07-20 14:47:27

标签: android

我设法在Android应用中创建了一个实例变量类,以保存一堆ImageView的可见性状态。无论如何,可以使用SharedPreferences或其他方式永久保存此变量吗?即使用户重新启动应用程序,我也需要加载状态。

ImageState.java

public class ImageState {
    //some variables here
    public ImageState(Context context, int[] imageId, int space){
        //blah blah...
    }
    public void saveState(){
        //saving visibility to shared preferences
    }
    public void loadState(){
        //loading state
    }
}

MainActivity.java

public void save(View view){
    //initializing variables here
    //creating ImageState
    ImageState imageState = new ImageState(this, ids, count);
    imageState.saveState();
}

public void load(View view){
   if(ImageState!=null) ImageState.loadState();
}

如何保存imageState

1 个答案:

答案 0 :(得分:0)

您只能永久保存原始数据。整数,字符串可以存储,但是上下文不能存储在SharedPrefs中。我建议您将所有原语保存在SharedPreferences中,然后使用SharedPreferences中的新上下文和数据重新初始化ImageState。使用此代码将数据存储在sharedprefs中

SharedPreferences.Editor editor = getSharedPreferences(MY_PREFS_NAME, 
MODE_PRIVATE).edit();
editor.putInt("space", space);
editor.apply();

如果要存储整数数组,请参考此答案https://stackoverflow.com/a/47120128/4260786