关闭显示屏时,活动生命周期不匹配

时间:2016-01-28 11:06:15

标签: android activity-lifecycle

要解决有关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

问题

通常情况下,当我关闭显示器时,我希望暂停应用程序,但为什么要在此之后停止,销毁,创建,启动,恢复和暂停?

2 个答案:

答案 0 :(得分:1)

我认为当您关闭显示屏时,您的方向会发生变化。大多数手机仅在纵向模式下显示屏幕锁定。因此,在锁定屏幕之前,它会旋转到方向,此配置更改也会应用于您的应用程序,因此会重新创建。

当您的应用处于纵向模式时尝试执行相同操作,它应该按预期工作。

要避免在配置更改时重新创建活动,请查看android:configChanges

答案 1 :(得分:0)

检查开发者选项,在应用程序部分中有选项不要保留活动,如果选中它将会发生