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

时间:2017-01-21 01:24:36

标签: java android activity-lifecycle

我正在开发一款Android应用,我想在其中检查用户是否已将应用最小化,还是仅来自其他活动。

详细地说,如果用户已启动另一个应用程序,转到主屏幕或锁定屏幕,我想显示用户将输入密码以访问应用程序的活动。但是在哪里或如何确切地检查这个?

https://developer.android.com/guide/components/activities/activity-lifecycle.html

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

3 个答案:

答案 0 :(得分:1)

我不清楚你想要达到的目标。 如果你想知道什么时候会发生什么样的生命周期方法,那么生命周期图就很清楚了。 基本上,最小化应用程序并转到另一个活动是一样的。但是,如果您指的是来自自己应用中的其他活动,则可以通过向您使用的意图添加额外信息来区分自己的活动。

基本上,它是这样的:

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会检查是谁创建它,这听起来就像你想要的那样。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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

onResume:当您的活动从onPause州导航回来时调用。

也许您的应用已经处于onStop状态,因此它会调用onRestart