Which activity method is called when orientation changes occur?

前端 未结 2 865
独厮守ぢ
独厮守ぢ 2020-12-08 04:44

Which method of the lifecycle is called when orientation changes occur? My application executes the onResume() method or maybe reloads the whole activity becau

2条回答
  •  渐次进展
    2020-12-08 05:12

    Interesting one...

    Activity is start onResume() is which you declare in your XML by default.

    And as I found from question answer on stack overflow is:

    Orientation Change

    • onSaveInstanceState
    • onPause
    • onStop
    • onCreate
    • onStart
    • onRestoreInstanceState
    • onResume

    Switch TO Activity 2

    • onSaveInstanceState
    • onPause

    Orientation Change WHILE IN Activity 2

    • onStop
    • onCreate
    • onStart

    Switchback BACK FROM Activity2

    • onResume

    I'm guessing that because Activity 1 is hidden at the time of rotation, onRestoreInstanceState isn't called because there is no 'view' (i.e., it can't be seen/viewed). Also, it is entirely possible to have 2 completely different layout files for portrait/landscape which potentially have different UI elements with different IDs.

    As a result, I'd say if you want to use the Bundle in onSaveInstanceState to save your own data, then you need to add extra logic in your onCreate (in Activity 1) to process your own data there (as well as doing it conditionally in onRestoreInstanceState).

    In particular, you could maintain a 'last known' orientation field so that onCreate knows that it needs to process your own data because orientation has changed, rather than relying on onRestoreInstanceState being called.

提交回复
热议问题