gpt4 book ai didi

Android - Activity onStart

转载 作者:行者123 更新时间:2023-11-29 02:09:55 24 4
gpt4 key购买 nike

我有这个 MainActivity,它会在我启动应用程序时启动,我知道只有这样 onCreate 才会被调用,然后 onStart 才会被调用。无论如何要知道是否调用了 onStart,而不先调用 onCreate?我的意思是,如果我在第二个 Activity 中按下后退按钮,那么只会调用 onStart,如何解决这个问题?或者也许有一种方法可以知道一个 Activity 在整个 Activity 堆栈中的位置?

提前致谢!

编辑:

我有这个 MainActivity,它会将您转到 LoginActivity,或者如果您已经登录,它会将您转到 ProfileActivity。当我在 ProfileActivity 中按回键时,我希望能够回家,而不是 MainActivity。我知道如何重写后退按钮使其像主页按钮一样工作,但问题是我还有其他 Activity ,如果我按回 ProfileActivity,我只希望它在 onPause 中没有其他 Activity 时像家一样。

已解决:

@Override
public void onStart(){
super.onStart();
if(counter == -1){
finish();
}
}

@Override
public void onPause(){
super.onPause();
counter--;
}

我要感谢 ArcDare 给我实现计数器的想法,谢谢!

最佳答案

您的问题与 Activity 生命周期有关。

  1. onCreate() 仅在 Activity 启动时被调用,无论是您的应用执行它还是在进程被终止之后。

  2. 当另一个 Activity 过来时,Activity 进入 Pause 状态。在这种情况下,当用户按下后退按钮时,将调用 onResume()

  3. 当 Activity 不在前台时, Activity 进入停止状态。

Activity 的前台生命周期发生在对 onResume() 的调用与相应的 onPause() 调用之间。在此期间, Activity 位于所有其他 Activity 之前并与用户交互。一个 Activity 可以频繁地在恢复和暂停状态之间切换——例如,当设备进入休眠状态时,当一个 Activity 结果被传递时,当一个新的 Intent 被传递时——所以这些方法中的代码应该是相当轻量级的。

在这种情况下, Activity 进入 onRestart() -> onStart()

有关 Activity 生命周期的详细说明,请参阅此 doc .

针对您在上面评论中提到的具体问题:

一旦你完成 MainActivity/LoginActivity finish() 它,那么它们将不会在你的 Activity 堆栈中,现在如果你的堆栈中没有 Activity 然后按下后退按钮它将转到主屏幕或者它有然后它将导航到该屏幕。现在您不需要覆盖后退按钮。

关于Android - Activity onStart,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8063239/

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