Java onPause()onStop()onResume()之间的混淆

Java onPause()onStop()onResume()之间的混淆,java,android,activity-lifecycle,Java,Android,Activity Lifecycle,我正在开发一个Android应用程序,我想在其中检查用户是否最小化了应用程序,或者只是来自其他活动 具体来说,如果用户启动了另一个应用程序,进入主屏幕或锁定屏幕,我想显示用户将输入密码以访问该应用程序的活动。但究竟在哪里或如何检查这一点呢 我正在尝试onResume(),但根据文档,如果用户导航到另一个活动并返回,则可以触发onResume()。一旦您的活动可见,它将调用OnStart(),并且一旦它准备好进行交互(例如触摸、单击等事件)。它调用onResume,在这个阶段,您的应用程序正在运

我正在开发一个Android应用程序,我想在其中检查用户是否最小化了应用程序,或者只是来自其他活动

具体来说,如果用户启动了另一个应用程序,进入主屏幕或锁定屏幕,我想显示用户将输入密码以访问该应用程序的活动。但究竟在哪里或如何检查这一点呢


我正在尝试
onResume()
,但根据文档,如果用户导航到另一个活动并返回,则可以触发
onResume()

一旦您的活动可见,它将调用OnStart(),并且一旦它准备好进行交互(例如触摸、单击等事件)。它调用onResume,在这个阶段,您的应用程序正在运行,并且完全处于前台。当您的活动启动另一个活动或对话框时,它会调用onPause,这意味着活动可见,但用户无法与活动UI交互。如果我们启动另一个完全隐藏前一个活动的活动,那么它的onStop方法被称为

onPause
:当另一个活动进入前台时调用

onStop
:当其他活动完全可见时调用

onResume
:当您的活动从
onPause
状态导航回时调用


可能你的应用程序已经处于
onStop
状态,因此它会调用
onRestart

,我不太清楚你想要实现什么。 如果您想知道当某些事情发生时它会使用哪种生命周期方法,那么生命周期图是非常清楚的。 基本上,将应用程序最小化并转到其他活动也是一样的。但如果你指的是来自你自己应用程序中的另一项活动,你可以通过在你使用的意图中添加额外的信息来区分你自己的活动

基本上是这样的:

Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
intent.putExtra(key,value);
startActivity(intent);
Bundle bundle = getIntent().getExtras();
if ( bundle != null && bundle.containsKey(key) ) {
    value = bundle.getInt(key); // not nessecarily getInt(), you should use according to your value type
    // use the value to tell if it is from your own app
} else {
    // it is not from your own app
}
在第二个活动中,您始终可以像这样检索数据:

Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
intent.putExtra(key,value);
startActivity(intent);
Bundle bundle = getIntent().getExtras();
if ( bundle != null && bundle.containsKey(key) ) {
    value = bundle.getInt(key); // not nessecarily getInt(), you should use according to your value type
    // use the value to tell if it is from your own app
} else {
    // it is not from your own app
}

您可以将此机制与生命周期方法结合使用。例如,如果在onCreate()方法中使用后一种代码,那么无论何时创建活动,if都会检查是谁创建的,这听起来很像你想要的。

我想为我的应用程序创建一个Pin锁,如果用户通过进入Android主屏幕或打开另一个应用程序最小化应用程序,该Pin锁将锁定应用程序,但如果出现以下情况,则不应锁定应用程序。。。用户启动应用程序并打开主页活动现在用户单击设置打开设置活动。现在,若用户按“后退”按钮返回,则“设置”活动将完成,主页活动将恢复。在这个阶段,我不想锁定应用程序,因为用户没有离开应用程序,他只是在打开和关闭活动。只有当用户最小化应用程序并重新启动它时,应用程序才应该锁定。这是我最初的想法。因此,当您在自己的活动之间导航时,使用我提到的方法来创建意图,在onResume()方法中,使用我给您的第二个代码块来判断它是否来自您自己的活动。如果不是,则必须来自其他活动,或来自最小化的应用程序或重新打开的锁屏。在这种情况下,您将再次将用户导航到PIN页面。