我正在尝试为我的 android 应用程序编写代码,以便在活动恢复时发生一些事情。虽然我只希望这些事情发生在第二次而不是第一次重新访问活动时。
因此,我希望用户在第一次访问活动时在onCreate
方法中执行他们需要的操作,然后当他们返回到活动时,onResume
代码就会发生。
我应该使用不同的方法还是如何实现我想要做的事情?
public void onResume(){
super.onResume();
RunningStatus = sharedPreferences.getBoolean("RunningStatus", false);
if (isS1Pressed) {
if (isPressed) {
if (RunningStatus = false) {
pause.setBackgroundResource(R.drawable.start);
}
}
}
编辑:
我不是说第二次,我的意思是每次之后。基本上我有一条生产线,我的应用程序确定它是领先还是落后。因此,当用户输入此活动时,可以执行计算。我们有一个暂停按钮,如果生产线在现实生活中停止,用户可以暂停生产线。虽然我希望用户可以离开该特定的生产线并在其他生产线上进行计算。尽管在我离开活动的那一刻,我就会失去它的所有状态。
谢谢
您可以使用布尔标志。 例如onResume
if (secondVisit) {
...
} else secondVisit = true;
如果你想在非常特定的时间做一些事情(只有2nd,而不是1st或3rd,4th,...(,我建议你应该使用一些计数器变量并使用活动方法onSaveInstanceState((和onRestoreInstanceState((来存储和检索。如果您不想在应用被杀死时重置计数器,请使用数据保留(如共享首选项(来存储计数器。
我假设您已经经历了活动生命周期,如果没有,请访问 https://developer.android.com/guide/components/activities/activity-lifecycle
boolean secondUse=false;//this should be a field in the activity class
onRestart(( 方法仅在我们访问活动并返回然后访问(即当活动已经在活动堆栈中时(时才调用。
如果您有其他用例,那么使用共享首选项会更好。
覆盖 onRestart(( 里面写着以下内容
if(!seconduse){
//do your stuff
secondUse=true;
}
正如您在编辑中所说,您需要在第一次访问后的每次访问中工作,然后只需将您的代码放入 onRestart(( 方法中
即可public void onRestart(){
super.onRestart();
RunningStatus = sharedPreferences.getBoolean("RunningStatus", false);
if (isS1Pressed) {
if (isPressed) {
if (RunningStatus = false) {
pause.setBackgroundResource(R.drawable.start);
}
}
}
}