Android 未调用onPause方法

Android 未调用onPause方法,android,android-activity,Android,Android Activity,我是android开发的新手,现在我试图了解android活动的生命周期 我有以下方法在logcat上打印生命周期过程: public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.d(tag, "In the onCreate() event"); } public vo

我是android开发的新手,现在我试图了解android活动的生命周期

我有以下方法在logcat上打印生命周期过程:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Log.d(tag, "In the onCreate() event");
}

public void onStart() {
    super.onStart();
    Log.d(tag, "In the onStart() event");
}

public void onRestart() {
    super.onRestart();
    Log.d(tag, "In the onRestart() event");
}

public void onResume() {
    super.onResume();
    Log.d(tag, "In the onResume() event");
}

public void onStop() {
    super.onStop();
    Log.d(tag, "In the onStop() event");
}

public void onDestroy() {
    super.onDestroy();
    Log.d(tag, "In the onDestroy() event");
}
问题是从未调用onPause()。我试着按home按钮,从最近的应用程序列表中选择其他应用程序,关闭屏幕显示,但它只是直接调用onStop(),而不是先调用onPause()再调用onStop()。我正在读的那本书说,如果活动被推到后台,那么支持在onPause()后面加onStop()

书籍内容:

Click the Phone button on the Android emulator so that the activity is pushed to the background. 
Observe the output in the LogCat window:
11-16 06:32:00.585: D/Lifecycle(559): In the onPause() event
11-16 06:32:05.015: D/Lifecycle(559): In the onStop() event
我正在运行4.2.2的真实设备和运行2.3.3的虚拟设备上进行测试,但结果是相同的。我只是误解了onPause的目的,还是对要调用的onPause做了错事


编辑:您能告诉我onPause()之后是否调用了onStop(),何时调用onResume()吗?onResume不支持由onPause()暂停的恢复吗?在我的测试程序中,onResume()只在onStart()之后调用,而不是在onPause()之后调用。可能是因为我只有一个活动?

onPause
肯定会被调用。但我无法在您的代码中看到覆盖的
onPause


onStop
onPause
之后调用,此时系统认为最好将活动休眠。这通常发生在您切换应用程序等时。
onResume
在显示活动/片段时在
onStart
之后调用
onResume
是您转储代码的地方,这些代码应在用户看到UI之前运行。

onPause
肯定会被调用。但我无法在您的代码中看到覆盖的
onPause


onStop
onPause
之后调用,此时系统认为最好将活动休眠。这通常发生在您切换应用程序等时。
onResume
在显示活动/片段时在
onStart
之后调用
onResume
是您转储代码的地方,这些代码应在用户看到UI之前运行。

您没有覆盖onPause()方法


您尚未重写onPause()方法


在Java中重写方法时,使用注释是一个很好的习惯:

@Override  // <---- THIS !
public void onDestroy() {
    super.onDestroy();
    Log.d(tag, "In the onDestroy() event");
}

@Override/在Java中重写方法时,使用注释是一个非常好的习惯:

@Override  // <---- THIS !
public void onDestroy() {
    super.onDestroy();
    Log.d(tag, "In the onDestroy() event");
}

@Override//您没有覆盖
活动.onPause
。该代码不显示
onPause()
方法的任何日志记录。你怎么知道没有人叫它?相信我…它会被调用的。谢谢所有好心回答我愚蠢问题的人。真不敢相信我竟然没有注意到(发生在每个人身上:)您没有覆盖
活动。onPause
。代码不会显示
onPause()
方法的任何日志记录。你怎么知道没有人叫它?相信我…它会被调用的。谢谢所有好心回答我愚蠢问题的人。真不敢相信我竟然没有注意到(发生在每个人身上:)嗨@meredrica,你能回答我的编辑问题吗?:)好了。希望这个帮助@meredrica,你能回答我的编辑问题吗?:)好了。希望这有帮助