gpt4 book ai didi

android - 调用 finish() 后 Activity 布局闪烁

转载 作者:太空宇宙 更新时间:2023-11-03 11:36:57 25 4
gpt4 key购买 nike

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

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);
}
}
}

注意setContentView()是在check之后,但是在第二个activity开始之前,第一个还在屏幕上闪烁。有谁知道如何让它不眨眼?

提前致谢。

最佳答案

finish() 的目的是销毁当前 Activity 并将其从返回堆栈中移除。通过调用 finish 然后触发 Intent ,您要求 Activity 自行销毁它(我假设眨眼是它试图恢复)然后将 Intent 触发到第二个。将完成移至 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;
}

关于android - 调用 finish() 后 Activity 布局闪烁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31817937/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com