Android studio 使SurfaceView的数据持久化配置更改

Android studio 使SurfaceView的数据持久化配置更改,android-studio,viewmodel,surfaceview,lifecycle,Android Studio,Viewmodel,Surfaceview,Lifecycle,我开发了一个类,它扩展了SurfaceView并保存了一系列变量 public class Scoreworks extends SurfaceView implements SurfaceHolder.Callback { private int backgroundColor = Color.WHITE; private int lineColor = Color.BLACK; private int contextLineColor = Color.parseCol

我开发了一个类,它扩展了SurfaceView并保存了一系列变量

public class Scoreworks extends SurfaceView implements SurfaceHolder.Callback {
    private int backgroundColor = Color.WHITE;
    private int lineColor = Color.BLACK;
    private int contextLineColor = Color.parseColor("#999999");
    private int gradientEx, gradientIn;
...
此类在onCreate方法的活动中实例化:

private Scoreworks sw;
...

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
        Bundle bundle = getIntent().getExtras();
        SharedPreferences sp = getSharedPreferences("Config", MODE_PRIVATE);
        mData = new ViewModelProvider(this).get(ScoreData.class);
        assert bundle != null;
        mData.initialize(this, bundle.getString("filename"), bundle.getBoolean("custom"), bundle.getByte("progress"), bundle.getInt("bpm"), bundle.getBoolean("premium"), bundle.getBoolean("listen"));
        sw = new Scoreworks(mData.fullScore.getTracks().get(0), this, this, 0.5f, 0.35f, mData.bpm);
        sw.addColorGradient(Color.parseColor("#FFFAF1"), Color.parseColor("#206f84"));
        sw.setHalfLineDistanceInPixel(savedHld);
        sw.enableScrollY(false);
        setContentView(sw);
我使用ViewModel来存储特定于活动的数据,但是“Scoreworcs”类本身有变量(它是一个关于显示音符的视图),我在重新创建活动时很难保存这些变量。我不想从头开始重新创建Scoreworks,就像现在这样,但我也不能将其保存在ViewModel中,因为这样会泄漏上下文。 Scoreworcs(扩展SurfaceView)不应该由活动自动重新创建吗(例如TextView)? 我在哪里可以存储明显属于此视图本身的数据