Android活动生命周期 - 知道onResume后跟onStart或onPause吗?

时间:2016-06-27 08:01:30

标签: android

我想知道是否有任何编程方式来识别某个活动是从onStart()还是onPause()恢复/接着?

Android activity life cycle - what are all these methods for?

提前致谢。

编辑:

我的问题可能不够明确。实际上,例如,我希望在我的活动从onPause但不是onStart恢复时显示吐司,是否可能?谢谢你的时间。

3 个答案:

答案 0 :(得分:1)

在您的活动中保持一面旗帜。在onPause中将其设置为true,并在onResume中检查值并相应地执行任务。在onResume

的末尾将标志设置为false

答案 1 :(得分:0)

我猜你需要的是Log class(https://developer.android.com/reference/android/util/Log.html)。 这是Android Studio的教程:https://developer.android.com/studio/debug/am-logcat.html

由于某些原因,您似乎想跟踪on-方法,所以只需写下:

protected void onStart() {
    Log.d("YourTag", "onStart() is called.");
    super.onStop();
}

protected void onPause() {
    Log.d("YourTag", "onPause() is called.");
    super.onPause();
}

或者这是我用来跟踪方法的实用方法:

public static void currentMethod() {
        Throwable t = new Throwable();
        Log.d("SomeTag", "==== " + t.getStackTrace()[1].getClassName() + "#" + t.getStackTrace()[1].getMethodName()
                + " ====");
}

答案 2 :(得分:0)

是的,有任何编程方式可以识别活动是从onStart()还是onPause()恢复。

为了理解它我正在关注一个简​​单的通知申请:

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);
///it will come in action after code of display notification function described below
DisplayNotification("ActivityLifeCycleDemo","onCreate");

sleepForaMinute();


}

}

现在我们将在活动中添加两个支持功能。

static final int NOTIFICATION_ID = 1776;

protected void DisplayNotification(String title,String message)

{

NotificationManager notifManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

Notification note = new Notification(R.drawable.icon, title, System.currentTimeMillis());

PendingIntent intent = PendingIntent.getActivity(this, 0, new Intent(this, ActivityLifeCycleDemo.class), 0);

note.setLatestEventInfo(this, title, message, intent);

notifManager.notify(NOTIFICATION_ID, note);

}

protected void sleepForaMinute()

{

try

{

Thread.sleep(60000);

} catch (InterruptedException e)

{

// TODO Auto-generated catch block

e.printStackTrace();

}

}

现在,当您开始活动时,您应该会在Android设备上看到如下所示的通知。

的onDestroy

现在让我们覆盖onDestroy事件,以便所有资源都是cleanas:

@Override
protected void onDestroy() {

super.onDestroy();

DisplayNotification("ActivityLifeCycleDemo","onDestroy");

}

onDestroy方法应该清理onCreate方法获取的以及之前被现在销毁的活动使用的所有资源。

在onStart

现在让我们覆盖onStart方法,如下所示:

@Override
protected void onStart() {
super.onStart();
DisplayNotification("ActivityLifeCycleDemo","onStart");
sleepForaMinute();
}

现在在这里  在onStart方法中,您应该启动活动所需的所有可见操作,例如显示动画,显示用户提示等。 的onStop 现在,让我们覆盖onStop方法,如下所示:

@Override
protected void onStop() {
super.onStop();
DisplayNotification("ActivityLifeCycleDemo","onStop");
}

onStop方法应该停止在onStart方法中启动的所有操作。由于活动是不可见的,因此您的活动不应执行(并消耗CPU周期)Android界面所需的任何任务。 的onResume

现在让我们覆盖onResume方法,如下所示:

protected void onResume() {

super.onResume();

DisplayNotification("ActivityLifeCycleDemo","onResume");

}

的onPause

现在让我们覆盖onPause方法,如下所示:

@Override
protected void onPause() {
super.onPause();
DisplayNotification("ActivityLifeCycleDemo","onPause");
}

结论

Android活动在其生命周期中会经历几种不同的状态。了解状态和事件将帮助您以更有效,更快速的方式为您的用户编写应用程序代码。 Android操作系统通过调用活动上的事件,让活动可以非常有效地管理自己,只要您仔细开发不同的事件即可。所以,在管理下一个Android应用程序的生命周期时玩得开心!