我有一个带标题画面的应用。当应用程序首次启动时,我有一个onCreate方法,其中包含以下代码:
setContentView(R.layout.title_screen);
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
setContentView(R.layout.main_screen);
}
}, 2000);
当我在main_screen布局上运行我的应用程序并按后退按钮时,它会关闭应用程序(应该如此)。但是,当我重新打开应用程序时,即使应用程序已在运行,它也会再次显示title_screen布局两秒钟。我该如何防止这种情况?
答案 0 :(得分:0)
这将防止在恢复时再次出现延迟:
private static boolean flag = false;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(!flag){
setContentView(R.layout.title_screen);
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
setContentView(R.layout.main_screen);
}
}, 2000);
flag = true;
} else {
setContentView(R.layout.main_screen);
}
}
顺便说一句,如果您的应用程序在后台并且在恢复时再次调用onCreate,则表示它已被操作系统杀死。因此,再次出现初始延迟是正常的。
我要做的是实现两个不同的活动,第一个显示title_screen,第二个显示在2s后显示你的主屏幕。
答案 1 :(得分:0)
查看代码后,我发现您始终以title_screen
开头,然后在2秒后,您将更改为main_screen
。因此,当您按back
时,表示您已完成activity
。当您重新打开应用程序时,会再次调用onCreated
,并且它会像上一次打开一样运行每行代码。当然,打开应用程序2次没有区别。为了克服这个问题,我建议使用SharedPreference
来存储标记以检查main_screen
或title_screen
。