關於onPostCreate——Activity徹底執行起來之後的回撥

yangxi_001發表於2016-12-20

今天偶然間發現了一個貌似很有用處的介面

  1. protected void onPostCreate (Bundle savedInstanceState)
  1. Since: API Level 1

  2. Called when activity start-up is complete (after onStart() and onRestoreInstanceState(Bundle) have been called). Applications will generally not implement this method; it is intended for system classes to do final initialization after application code has run.

  3. Derived classes must call through to the super class's implementation of this method. If they do not, an exception will be thrown.

記得之前想要在Activity佈局完成,徹底跑起來之後,再獲取當前Activity的視窗中,某個View的寬高,之前用的辦法很土,弄個Handler,發個Message出來,使用sendMessageDelayed或者sendEmptyMessageDelayed。
說白了就是延遲若干時間之,等Activity徹底跑起來之後,再取獲取View的寬高。
使用這個辦法,總是有一種擔心:delay的時間太長了,害怕使用這個獲取的寬高的值的時候,自己獲取寬高的函式還沒被呼叫;delay的時間太短了,又害怕在某些配置比較低的機型上,在delay的時間內Activity沒能徹底的跑起來,獲取到的值可能會不正確。

從SDK的說明來看,onPostCreate 貌似可以實現我們想要的效果。
系統呼叫到onPostCreate時,Activity應該已經 start-up (徹底跑起來)了。


相關文章