在MainActiivity上,检查已存储的会话并重定向到SecondActivity。我期望的是,仅对会话存储的用户显示SecondActivity,但是在几秒钟内出现白屏并重定向到SecondActivity。我的onCreate方法如下
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
session= new Session(MainActivity.this);
if(session.getData("auth").equals("true")){
Intent i= new Intent(MainActivity.this,SecondActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(i);
finish();
}else{
setContentView(R.layout.activity_main);
}
}
答案 0 :(得分:1)
仅通过禁用以下样式的窗口预览即可解决问题
<item name="android:windowDisablePreview">true</item>
花一些时间找到解决方案,所以这里是问题的完整说明
为什么要预览窗口?
Android需要一些时间来从类,资源等加载数据(在启动时),以便克服android显示称为Window预览的临时窗口的麻烦。
这为用户提供了应用程序启动的即时反馈,也使应用程序有时间进行自身初始化。当您的应用程序准备好运行时,系统会删除预览窗口并显示您的应用程序的窗口和视图。结果,显示启动窗口时,您的Java代码均不会执行。
答案 1 :(得分:0)
setContentView
不应生效(并且Activity
也不需付出任何努力),因为finish()
中的onCreate
在更早的时候被调用了,但是请确保添加{{1} }放在括号中
您看到的是return
颜色,可能会更改为windowBackground
的主题
Activity
您也可以在调用// theme for activity, not whole application, will not affect other activities
<style name="MainActivityTheme" parent="AppTheme">
<item name="android:windowBackground">#345678</item>
之前通过代码对其进行更改,但是有一段时间可能是主题中可见的颜色(尤其是在低端设备上),并且您不希望这样做
也许更好的方法是新的super.onCreate
,它将是fully transparent并直接重定向到正确的Activity
?或者如果您的会话还原非常繁琐,则使用不带Activity
这样的视觉表示的smth吗?
请注意Service
标志,因为您的windowIsTranslucent
will loose rotation configuration change calls