android横竖屏切换的生命周期

重写只有一个参数的onSaveInstanceState方法

    override fun onSaveInstanceState(outState: Bundle) {
        super.onSaveInstanceState(outState)
        LogUtil.i("onSaveInstanceState")
    }

代码如下:

class MainActivityOne : AppCompatActivity() {

    companion object {
        fun start(context: Context) {
            val intent = Intent(context, MainActivityOne::class.java)
            context.startActivity(intent)
        }
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.layout_one)
        LogUtil.i("onCreate")
    }

    override fun onStart() {
        super.onStart()
        LogUtil.i("onStart")
    }

    override fun onResume() {
        super.onResume()
        LogUtil.i("onResume")
    }

    override fun onPause() {
        super.onPause()
        LogUtil.i("onPause")
    }

    override fun onStop() {
        super.onStop()
        LogUtil.i("onStop")
    }

    override fun onRestart() {
        super.onRestart()
        LogUtil.i("onRestart")
    }

    override fun onDestroy() {
        super.onDestroy()
        LogUtil.i("onDestroy")
    }

    override fun onNewIntent(intent: Intent?) {
        super.onNewIntent(intent)
        LogUtil.i("onNewIntent")
    }

    override fun onSaveInstanceState(outState: Bundle) {
        super.onSaveInstanceState(outState)
        LogUtil.i("onSaveInstanceState")
    }

    override fun onRestoreInstanceState(savedInstanceState: Bundle) {
        super.onRestoreInstanceState(savedInstanceState)
        LogUtil.i("onRestoreInstanceState")
    }

    override fun onConfigurationChanged(newConfig: Configuration) {
        super.onConfigurationChanged(newConfig)
        var a = ""
        when (newConfig.orientation) {
            Configuration.ORIENTATION_UNDEFINED -> {
                a = "ORIENTATION_UNDEFINED"
            }

            Configuration.ORIENTATION_LANDSCAPE -> {
                a = "ORIENTATION_LANDSCAPE"
            }
            Configuration.ORIENTATION_PORTRAIT -> {
                a = "ORIENTATION_PORTRAIT"
            }

            Configuration.ORIENTATION_SQUARE -> {
                a = "ORIENTATION_SQUARE"
            }
        }
        LogUtil.i("onConfigurationChanged:${a}")
    }
}

1.没设置configChanges

竖屏启动:

切换横屏:

总结:

1.没设置configChanges时,横竖屏切换不会走onConfigurationChanged方法

2.生命周期

正常启动:onCreate--onStart--onResume ;

切换横屏(反复切换一样):onPause--onStop--onSaveInstanceState--onDestroy--onCreate--onStart--onRestoreInstanceState--onResume

销毁:onPause--onStop--onDestroy

2.设置configChanges

 android:configChanges="keyboardHidden|screenSize|orientation"

 竖屏启动:

切换横屏:

总结:

1.设置configChanges时,横竖屏切换走onConfigurationChanged方法,不会重新走生命周期

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值