gpt4 book ai didi

java - 覆盖共享首选项中变量的值或创建大量变量?

转载 作者:太空宇宙 更新时间:2023-11-04 10:01:35 24 4
gpt4 key购买 nike

我对 Android 很陌生,最近我遇到了需要使用 SharedPreferences 的情况:我有一个随着项目的进行而更改的变量,并且应用程序根据变量的值在不同的屏幕中启动,例如,如果值为 0,则应用程序应在 LoginManager.class 中启动,如果为 1,则应在 MainActivity.class 中启动。

因此,每当我成功登录时,状态就会更改为 1(因此我不必每次都登录),或者如果我注销,状态就会更改为 0。
鉴于此,当然需要将变量保存在外部,这样值就不会丢失,并在创建第一个屏幕时检索它。

所以我的逻辑是,我创建一个 onDestroy 方法,这样当屏幕关闭时,任何全局变量“state”所拥有的就是 SharedPreference 变量“sharedstate”将得到的内容(这是来 self 的初始 Activity):

private SharedPreferences sharedPref;
public static int state=0;


protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_first);
pb = (ProgressBar) findViewById(R.id.pb);
mContext = IntroManager.this;
pb.setVisibility(ProgressBar.VISIBLE);
CountDownTimer mCountDownTimer;
pb.setProgress(i);
sharedPref = mContext.getSharedPreferences("Apathy", Context.MODE_PRIVATE);
getProfile();
mCountDownTimer=new CountDownTimer(1500,1000) {
@Override
public void onTick(long millisUntilFinished) {
Log.v("Log_tag", "Tick of Progress"+ i+ millisUntilFinished);
i++;
pb.setProgress((int)i*100/(1500/1000));
}

@Override
public void onFinish() {
check();
i++;
pb.setProgress(100);
}
};
mCountDownTimer.start();
}

@Override
protected void onDestroy (){
super.onDestroy();
SharedPreferences.Editor editor = sharedPref.edit();
editor.putInt("sharedstate", 1);
editor.commit();
}

private void getProfile() {
String sharedstate = sharedPref.getString("state", "");
state= Integer.parseInt(sharedstate);
}

public void check(){
if(state == 0){
Intent mcrIntent = new Intent(IntroManager.this, LoginManager.class);
startActivity(mcrIntent);
overridePendingTransition(R.anim.slide_in, R.anim.slide_out);
}else{
if(state == 1){
Intent mcrIntent = new Intent(IntroManager.this, MainActivity.class);
startActivity(mcrIntent);
overridePendingTransition(R.anim.slide_in, R.anim.slide_out);
}
}
}

所以我陷入了困境:如果我在所有屏幕中放置相同的 onDestroy 方法(因为我无法预测应用程序将在哪里关闭),相同的“sharedstate”会改变它的值还是会创建一堆称为 Sharedstate 的变量?他们是否也因同样的“冷漠”而得救?

最佳答案

每次 Activity 调用 onDestroy 时,它都会覆盖相同的值。 SharedPreferences 是保存在创建它们的手机上的自己的文件。标签“Apathy”是文件名,“sharedstate”是保存值的键。

这就是 SharedPreferences 的强大功能,您可以轻松保存原始数据。但是当应用程序被卸载时,首选项也消失了。

也许寻找一些视频和教程,那里有很多。 Documentation也确实很有帮助(但有时对于初学者来说很难理解)

关于java - 覆盖共享首选项中变量的值或创建大量变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53395993/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com