调用finish()后活动布局闪烁

art*_*ire 3 android activity-lifecycle android-activity

当我打开我的应用程序时,会启动一个Activity,并且在其onCreate方法中我正在检查某些条件.如果条件为真,我完成当前活动并打开另一个活动.问题是:第一个活动在屏幕上闪烁,然后第二个活动打开.代码如下:

public class FirstActivity extends Activity {
    @Override
    protected final void onCreate(final Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //some code here...
        checkSomeStuff();
        setContentView(R.layout.my_layout);
        //some code here...
    }
    private void checkSomeStuff() {
        if (/*some condition*/) {
            final Intent intent = new Intent(this, SecondActivity.class);
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            finish();
            startActivity(intent);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意,setContentView()在检查之后,但在第二个活动开始之前,第一个活动仍然在屏幕上闪烁.有谁知道怎么让它不眨眼?

提前致谢.

PSc*_*tte 7

finish()的目的是销毁当前活动并将其从后堆栈中删除.通过调用完成然后触发意图,你要求活动自我销毁(我假设眨眼是它试图恢复)然后将意图发射到第二个.在startActivity()之后移动完成

 @Override
protected final void onCreate(final Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //some code here...
    if(checkSomeStuff()) {
         setContentView(R.layout.my_layout);
         //some code here...
    }
}

private boolean checkSomeStuff() {
    if (/*some condition*/) {
        final Intent intent = new Intent(this, SecondActivity.class);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(intent);
        finish();
        return false;
    }
    return true;
}
Run Code Online (Sandbox Code Playgroud)