当文档“onPause”被调用时,当:为什么在以下情况下不会调用“onPause”?
当系统即将开始恢复以前的活动时。
相比“的onStop”,所不同的是:
当活动不再对用户可见调用,因为其他活动已经恢复并且覆盖这一个。
但是,当我长按HW-Home键和“最近使用的应用”出现时, 了“的onPause”不叫。
此时,我无法长时间与原始活动 进行互动,但仍然可见。
我很困惑这种情况。 请帮忙解释一下。
非常感谢。 BR, 亨利
当文档“onPause”被调用时,当:为什么在以下情况下不会调用“onPause”?
当系统即将开始恢复以前的活动时。
相比“的onStop”,所不同的是:
当活动不再对用户可见调用,因为其他活动已经恢复并且覆盖这一个。
但是,当我长按HW-Home键和“最近使用的应用”出现时, 了“的onPause”不叫。
此时,我无法长时间与原始活动 进行互动,但仍然可见。
我很困惑这种情况。 请帮忙解释一下。
非常感谢。 BR, 亨利
实际发生这种情况是因为长时间按住Home键时,没有任何活动正在启动。 onPause/onStop仅在您选择“最近使用的应用程序”列表中显示的其中一个应用程序时才会被调用。
的onPause()的文档是很清楚的:
调用当活动即将 到背景活动生命周期的一部分,但还没有(还)被杀害。
谢谢,MobileCushion, 你的回答是正确的。 关键是“最近的应用程序”不会被添加到应用程序堆栈中,因此结果是 。 – Henry 2012-02-22 06:59:52
当你调出最近使用的应用调用OnStop方法被调用,调用OnStop方法被立即调用作为活动的UI不是重点,因为这样
@Henry请尝试自己通过测试应用程序的流程。创建一个活动,其中覆盖所有方法并在所有方法下打印日志。流程是onCreate >> onStart/restart >> onResume,当你按Home键或开始任何新的活动,然后它调用onPause >> onStop,如果你完成你的应用程序,那么你的应用程序是销毁/完成,所以在哪里混乱。
这是官方文件说什么onPause()
调用当活动即将 到背景活动生命周期的一部分,但还没有(还)被杀害。与onResume()的 相对应。
当活动B是活性的前推出,这个回调将 可以在A,B调用不会直到A的的onPause创建()返回,所以 一定不要做任何冗长这里。
详细信息please see this。
public class MainActivity extends Activity
{
String tag="my result";
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Log.v(tag,"I am in oncreate");
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
Log.v(tag,"I am in onDestroy");
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
Log.v(tag,"I am in onpause");
}
@Override
protected void onRestart() {
// TODO Auto-generated method stub
super.onRestart();
Log.v(tag,"I am in onRestart");
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
Log.v(tag,"I am in onresume");
}
@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
Log.v(tag,"I am in onstart");
}
@Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
Log.v(tag,"I am in onstop");
}
}
运行它并检查logcat。按回来按钮,然后检查。再次启动应用程序和
按呼叫按钮,然后检查logcat现在按返回按钮,并再次检查logcat。您可以轻松了解Activity的生命周期。
在很多现代手机中,最近的应用程序列表是一个活动,并且确实触发。我已经在一些三星和LG手机上测试过了,分别是com.android.systemui
和com.lge.launcher2
。
这就是说,当你打开最近的应用程序屏幕时,看起来你不能依赖于接收onPause。我很好奇,看看有多少设备不给你 ...
您可以发布你的onPause(代码) – Raj 2012-02-10 10:16:10
看到:HTTP://stackoverflow.com/a/9190541/265167 – 2012-02-10 10:30:02