如何在第二个onResume之后执行一个方法?

时间:2012-12-04 11:39:07

标签: android android-lifecycle

我有两个在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

2 个答案:

答案 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()之后。