我有两个在onCreate()和onResume()上执行的不同方法,但我希望在执行onCreate()时,onResume中的方法不会运行。有办法实现这个目标吗?
- 编辑 -
我从onCreate()中删除了一段代码,并创建了一个与onPause()交互的标志,并将boolean标志作为params传递:
Boolean flagFirstTime = true;
@Override
public void onResume()
{
super.onResume();
new asyncTask().execute(flagFirstTime);
}
@Override
protected void onPause() {
super.onPause();
flagFirstTime = false;
}
在我问之前,我正在考虑举旗,但在我看来,这非常难看。 XD
答案 0 :(得分:3)
创建一个在onCreate = true中设置的模块级布尔值。当onResume执行时,将其设置为false - 在您传递应该仅在值为false时运行的方法之后。这样,当在onPause之后执行onResume时,onResume中的methond将会运行。
boolean skipMethod = false;
onCreate(){
skipMethod = true;
}
onResume(){
if(!skipMethod){
myMethoed();
}
skipMethod = false;
}
答案 1 :(得分:1)
public class SomeActivity extends Activity{
bool onCreateCalled = false;
@Override onCreate()...
...
onCreatedCalled = true;
...
@Override onResume()...
...
if !onCreatedCalled){doSomething();}
...
然而,这很难看。我建议你再看看这个常用方法,只从onResume()调用它,因为onResume()总是在onCreate()之后。