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

提前致谢!

编辑:

我有这个MainActivity,它将把您发送到LoginActivity,或者如果您已经登录了,它将把您发送到ProfileActivity。当我在ProfileActivity中按回时,我希望能够回家,而不是MainActivity。我知道如何覆盖后退按钮以使其像主页按钮那样工作,但是问题是我还有其他活动,如果我在ProfileActivity上按回,则仅希望onPause中没有其他活动时它像主页一样起作用。

解决了:

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

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


我将向ArcDare致以诚意,感谢我提出实现计数器的想法,谢谢!

最佳答案

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


onCreate()仅在活动启动或您的应用执行该活动或该进程被终止后才被调用。
当另一个活动过来时,该活动进入Pause状态。在这种情况下,当用户按下后退按钮时,将调用onResume() get。
当活动不在前台时,活动进入Stop状态。


在调用onResume()到相应的调用onPause()之间发生The foreground lifetime of an activity。在这段时间内,活动位于所有其他活动的前面,并且与用户进行交互。活动经常会在恢复状态和暂停状态之间进行切换-例如,当设备进入睡眠状态,何时发送活动结果,何时传递新意图时-因此这些方法中的代码应该相当轻量。

在这种情况下,活性记为onRestart() -> onStart()

有关活动生命周期的详细说明,请参考此doc

如您在上面的评论中提到的特定问题:

一旦完成MainActivity / LoginActivity finish()的操作,它们就不会出现在您的活动堆栈中,现在,如果您的堆栈中没有任何活动,那么在按返回按钮时它将返回主屏幕,或者它将进入主屏幕。导航到该屏幕。现在,您无需覆盖后退按钮。

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

10-12 06:00