gpt4 book ai didi

带有启动画面重启和后退按钮之谜的 Android Activity

转载 作者:太空狗 更新时间:2023-10-29 13:42:25 24 4
gpt4 key购买 nike

我有一个带有启动画面的 Android 应用。

此初始屏幕预加载数据,完成后启动应用程序的主要 Activity 并完成(通过 finish() 调用)。

只要应用程序没有被完全杀死,它就可以很好地工作。因此,我通常可以像往常一样在不同的任务之间来回切换:当我从一个子 Activity 中离开应用程序并在我看到这个子 Activity 后很快返回时。

现在,当我离开这个子 Activity 并做一些其他事情一段时间时,这个应用程序进程不可避免地会被操作系统杀死。

目前没问题。现在我希望 Android 不知道我的预加载(如果没有预加载数据,它只会花费更长的时间或不显示某些字体,但 Android 无法意识到我正在某处进行预加载),以恢复子 Activity 来自 bundle 。但是启动画面 Activity 已启动。

所以,我说,那很好......启动画面 Activity 毕竟是启动器/主要 Activity 。现在,我真正的谜团如下。

当我从这个新加载的初始屏幕按下后退按钮时,我将看到我在应用程序被杀死之前离开的子 Activity 。我真的不明白这一点。显然,Android DID 保存了要重新加载的子 Activity 的状态(及其历史堆栈),但它没有重新加载,而是选择启动启动画面,而这个子 Activity (我在它被杀死之前早些时候离开了任务)向后退了一步 Activity 堆栈。

为什么会这样?

当进程没有被终止时,我可以切换回我离开的地方。当它被杀死时我不能(但仍然恢复了该应用程序的整个早期历史)。我知道在后一种情况下 Android 必须加载状态等,但这应该不是问题,默认情况下会自动执行(根据文档)。

附言我没有做任何花哨的事情。默认启动标志,无覆盖状态恢复方法等。

最佳答案

嘿,试试这个对我有用,我们必须采用一个 bool 标志,所以它会处理这个问题,当你在加载初始屏幕期间按下后退按钮时,它会停止该 Activity ,因此自动重新加载问题会解决希望它对你。

public class Main extends Activity {

ImageView imageLogo;
LinearLayout myLayout;
private Thread splashTread;
private boolean isBackPressed = false;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);

splashTread = new Thread() {
public void run() {
try {
sleep(3000);
if (!isBackPressed) {

Intent myIntent = new Intent(
"src.SplashScreen.com.MENU");
startActivity(myIntent);

}

} catch (InterruptedException e) {
e.printStackTrace();
}

finally {

finish();

}
}

};

splashTread.start();

}

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK)) {
isBackPressed = true;
finish();
}
return super.onKeyDown(keyCode, event);

}

}

关于带有启动画面重启和后退按钮之谜的 Android Activity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4126590/

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