onPause() onStop() onResume() 之间的混淆
Confusion between onPause() onStop() onResume()
我正在开发一个 Android 应用程序,我想在其中检查用户是否已将应用程序最小化或只是来自另一个 activity。
详细来说,如果用户启动了另一个应用程序、转到主屏幕或锁定屏幕,我想显示 activity 用户将在其中输入密码以访问该应用程序。但是在哪里或如何准确检查呢?
https://developer.android.com/guide/components/activities/activity-lifecycle.html
我正在尝试 onResume()
但根据文档 onResume()
如果用户导航到另一个 activity 并返回,则可以触发 onResume()
。
一旦您的 activity 变得可见,它将调用 OnStart() 并且一旦准备好进行交互(例如触摸、点击等事件)。它调用 onResume,在这个阶段你的应用程序是 运行 并且它完全在前台。当您的 activity 启动另一个 activity 或对话框时,它会调用 onPause,这意味着 activity 可见但用户无法与 Activity UI 交互。如果我们启动另一个 Activity 完全隐藏之前的 activity 那么它的 onStop 方法被调用
onPause
:当另一个 activity 进入前台时调用。
onStop
:当另一个 activity 完全可见时调用。
onResume
:当您的 activity 从 onPause
状态导航回时调用。
也许您的应用程序已经处于 onStop
状态,因此它会调用 onRestart
。
我不是很清楚你想达到什么目的。
如果您想知道发生某些事情时它会调用哪个生命周期方法,那么生命周期图非常清楚。
基本上,最小化应用程序并转到另一个activity是相同的。但是,如果您在自己的应用中指的是来自另一个 activity,则可以通过向您使用的意图添加额外信息来区分您自己的 activity。
基本上是这样的:
Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
intent.putExtra(key,value);
startActivity(intent);
而在您的 SecondActivity 中,您始终可以像这样检索该数据:
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() 方法中使用后面的代码,那么无论何时创建 Activity,if 都会检查创建它的人,这听起来像您想要的。
我正在开发一个 Android 应用程序,我想在其中检查用户是否已将应用程序最小化或只是来自另一个 activity。
详细来说,如果用户启动了另一个应用程序、转到主屏幕或锁定屏幕,我想显示 activity 用户将在其中输入密码以访问该应用程序。但是在哪里或如何准确检查呢?
https://developer.android.com/guide/components/activities/activity-lifecycle.html
我正在尝试 onResume()
但根据文档 onResume()
如果用户导航到另一个 activity 并返回,则可以触发 onResume()
。
一旦您的 activity 变得可见,它将调用 OnStart() 并且一旦准备好进行交互(例如触摸、点击等事件)。它调用 onResume,在这个阶段你的应用程序是 运行 并且它完全在前台。当您的 activity 启动另一个 activity 或对话框时,它会调用 onPause,这意味着 activity 可见但用户无法与 Activity UI 交互。如果我们启动另一个 Activity 完全隐藏之前的 activity 那么它的 onStop 方法被调用
onPause
:当另一个 activity 进入前台时调用。
onStop
:当另一个 activity 完全可见时调用。
onResume
:当您的 activity 从 onPause
状态导航回时调用。
也许您的应用程序已经处于 onStop
状态,因此它会调用 onRestart
。
我不是很清楚你想达到什么目的。 如果您想知道发生某些事情时它会调用哪个生命周期方法,那么生命周期图非常清楚。 基本上,最小化应用程序并转到另一个activity是相同的。但是,如果您在自己的应用中指的是来自另一个 activity,则可以通过向您使用的意图添加额外信息来区分您自己的 activity。
基本上是这样的:
Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
intent.putExtra(key,value);
startActivity(intent);
而在您的 SecondActivity 中,您始终可以像这样检索该数据:
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() 方法中使用后面的代码,那么无论何时创建 Activity,if 都会检查创建它的人,这听起来像您想要的。