Android studio 使SurfaceView的数据持久化配置更改
我开发了一个类,它扩展了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
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)?
我在哪里可以存储明显属于此视图本身的数据