2017-02-09 2 views
6

Я считаю, что onAttachedToWindow вызывается, когда вызывается setContentView onCreate (R.layout.myLayout.xml). поэтому могу ли я предположить, что в жизненном цикле деятельности, который onDetachedFromWindow вызывается при уничтожении активности? Мой вопрос заключается в том, как связать эти два перехвата вызова с жизненным циклом действий?Android view - onAttachedToWindow и onDetachedFromWindow - когда они вызываются в жизненном цикле активности?

Могу ли я сказать, что onAttachedToWindow привязан к onCreate и onDetachedFromWindow привязан к onDestroy?

ответ

7

С технической точки зрения onAttachedToWindow вызывается после onResume (и это происходит только один раз perlifecycle). звонок добавит DecorView к текущему WindowManger, который в свою очередь вызовет WindowManagerGlobal.addView(), который пересекает все виды и звонит onAttachedToWindow на каждый вид.

onDetachedFromWindow связана с onDestroy

+0

вопрос. если его вызывать onResume, то это означает, что каждый раз, когда активность возобновляется, просмотр снова привязывается к активности? – j2emanue

+0

@WenChao Это неправда. onAttachedToWindow вызывается только ONCE за время жизни этого конкретного действия. –

+0

@CatalinMorosan, я должен сказать это более ясно, вы правы, он называется ONCE за всю жизнь. То, что я пытался сказать, это первый (и только) 'onAttachedToWindow', который происходит после' onResume', больше нет вызова 'onAttachedToWindow' после этого в жизненном цикле. Благодарю. – WenChao

0

Я считаю, что это возможно, что onAttachedToWindow будет вызываться, когда setContentView называется.

При использовании разделенного экрана на Android N, и значение configChanges деятельности в AndroidManifest.xml быть установлены:

"keyboardHidden|orientation|screenSize" 

onAttachedToWindow будет называться в setContentView, потому что переменная «mAttachInfo» в decorview окна не является нулевым, когда вы вызываете setContentView для добавления rootView в decorView, dispatchAttachedToWindow вызывается в addViewInner().

И наконец, после операции onResume(), onAttachedToWindow() не будет называться снова.

Смежные вопросы