要解决有关App暂停/恢复的一些问题,我通过以下简单应用程序测试了Activity Lifecycle:
public class MainActivity extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.content_main);
Log.w("xxx", "create");
}
@Override
public void onStart(){
super.onStart();
Log.w("xxx","start");
}
@Override
public void onResume(){
super.onResume();
Log.w("xxx","Resume");
}
@Override
public void onPause(){
super.onPause();
Log.w("xxx","pause");
}
@Override
public void onDestroy(){
super.onDestroy();
Log.w("xxx","destroy");
}
@Override
public void onStop(){
super.onStop();
Log.w("xxx","stop");
}
@Override
public void onRestart(){
super.onRestart();
Log.w("xxx","restart");
}
}
使用包含Textview的简单布局。
我安装了应用程序并运行它:
01-28 11:56:09.032 2517-2517/android.se.behy.test W/xxx: create
01-28 11:56:09.035 2517-2517/android.se.behy.test W/xxx: start
01-28 11:56:09.035 2517-2517/android.se.behy.test W/xxx: Resume
并关闭显示屏(按下开/关按钮),令人惊讶地看到以下日志:
01-28 11:56:09.032 2517-2517/android.se.behy.test W/xxx: create
01-28 11:56:09.035 2517-2517/android.se.behy.test W/xxx: start
01-28 11:56:09.035 2517-2517/android.se.behy.test W/xxx: Resume
01-28 11:56:20.750 2517-2517/android.se.behy.test W/xxx: pause
01-28 11:56:20.753 2517-2517/android.se.behy.test W/xxx: stop
01-28 11:56:20.809 2517-2517/android.se.behy.test W/xxx: destroy
01-28 11:56:20.843 2517-2517/android.se.behy.test W/xxx: create
01-28 11:56:20.844 2517-2517/android.se.behy.test W/xxx: start
01-28 11:56:20.844 2517-2517/android.se.behy.test W/xxx: Resume
01-28 11:56:20.857 2517-2517/android.se.behy.test W/xxx: pause
问题
通常情况下,当我关闭显示器时,我希望暂停应用程序,但为什么要在此之后停止,销毁,创建,启动,恢复和暂停?
答案 0 :(得分:1)
我认为当您关闭显示屏时,您的方向会发生变化。大多数手机仅在纵向模式下显示屏幕锁定。因此,在锁定屏幕之前,它会旋转到方向,此配置更改也会应用于您的应用程序,因此会重新创建。
当您的应用处于纵向模式时尝试执行相同操作,它应该按预期工作。
要避免在配置更改时重新创建活动,请查看android:configChanges
。
答案 1 :(得分:0)
检查开发者选项,在应用程序部分中有选项不要保留活动,如果选中它将会发生