我编写了一个类,只希望它在该活动中运行一次。
因此,当活动恢复时,此类将不再有任何效果,另一个类将生效。
让我们先说一下ACTIVITY,而不是应用程序,它会执行课程,而在其他每次启动时它都会做其他事情。如果应用程序已关闭并重新进入,它将记住该类已经运行并且不会执行该操作。
我希望这一切都有意义!
继承我想要只运行一次的课程:
//Should only happen on first launch of activity.
public void AgeCalculation() {
if (male == true && age >= 18) {
newweight = (weight * 0.8);
}
weightresultText.setText(Double.toString(newweight));
//Saves Weight to sharedpreference to use later.
SaveWeight();
}
这是每隔一次运行的课程:
//runs on every other launch of activity
public void AfterFirstLaunch(){
//The button clicks get the saved value and increments it and saves it again.
buttonClick1();
buttonClick2();
buttonClick3();
buttonClick4();
buttonClick5();
//receive value on other launches and show on field.
SharedPreferences shoulderPreference = getApplicationContext().getSharedPreferences("ShoulderWeightPreference", Context.MODE_PRIVATE);
String newweight = shoulderPreference.getString("storednewweight", "");
weightresultText.setText(newweight);
}
答案 0 :(得分:1)
在Activity中创建一个名为onCreate()
的继承方法,只要创建了Activity,就会调用该方法。
为了检查Activity是否已在运行,可以在onCreate()
方法中检查传入的参数Bundle savedInstanceState
是否为空。
在活动首次运行时,savedInstanceState
将为空。任何后续的创作"将使savedInstanceState
非空,因为它已经创建。
所以,为了达到你想要的结果,你会有这样的结果:
@Override
protected void onCreate(Bundle savedInstanceState) {
if(savedInstanceState == null) {
// The Activity is brand new
AgeCalculation();
}
else {
// The Activity has been re-created
AfterFirstLaunch();
}
// ... Other stuff
}
顺便说一句,你说你想要运行这些不同的"类"但我认为你的意思是方法?
编辑:如果我错了,请纠正我,但我认为你只需要在第一次运行时填写共享偏好?
如果是这种情况,那么您只需要检查您的共享偏好是否存在:
@Override
protected void onCreate(Bundle savedInstanceState) {
SharedPreferences shoulderPreference = getApplicationContext().getSharedPreferences("ShoulderWeightPreference", Context.MODE_PRIVATE);
// The second parameter in getString() is the default value which
// is returned if the prefernece "storednewweight" does not
// exist (yet)
String prefValue = shoulderPreference.getString("storednewweight", "");
if(prefValue.equals("")) {
// The preference was not created before
AgeCalculation();
}
else {
// Preference already created
AfterFirstLaunch();
}
// ... Other stuff
}
答案 1 :(得分:0)
你应该看一下developper网站上的android,一切都在那里解释。
所以你会有类似的东西:
protected void onCreate() {
AgeCalculation();
super.onCreate(); //since we overridden it we want it to run too.
}
protected void onResume() { //it could be on start depending on what you want
AfterFirstLaunch();
super.onResume();
}