2017-02-09 7 views
6

onCreateのsetContentView(R.layout.myLayout.xml)が呼び出されたときにonAttachedToWindowが呼び出されると思います。ですから、アクティビティライフサイクルでは、アクティビティが破棄されたときにonDetachedFromWindowが呼び出されると仮定できますか?私の質問は、これらの2つのコールバックフックをアクティビティライフサイクルに結びつけるにはどうすればいいですか?Androidビュー - onAttachedToWindowとonDetachedFromWindow - アクティビティライフサイクルではいつ呼び出されますか?

私は、onAttachedToWindowがonCreateに関連付けられており、onDetachedFromWindowがonDestroyに関連付けられていると言うことができますか?

答えて

7

onAttachedToWindowは、onResumeの後に呼び出されます(これはperlifecycleに1回のみ発生します)。 ActivityThread.handleResumeActivityコールは現在のWindowMangerDecorViewを追加し、WindowManagerGlobal.addView()を呼び出すと、すべてのビューをトラバースし、各ビューでonAttachedToWindowを呼び出します。

onDetachedFromWindowが、私はそれがsetContentViewが呼び出されたときにonAttachedToWindowが呼び出される可能性があります見つけるonDestroy

+0

質問です。それがonResumeで呼び出された場合は、アクティビティが再開するたびにアクティビティに再アタッチされることを意味します。 – j2emanue

+0

@WenChaoそうではありません。 onAttachedToWindowは、その特定のアクティビティの存続期間につき1回だけ呼び出されます。 –

+0

@CatalinMorosan、私はそれをより明確に述べるべきです、あなたは一生一回と呼ばれる正しいです。私が言っていることは、最初の(そして唯一の) 'onAttachedToWindow'は' onResume'の後に起こるということです。その後、ライフサイクルで 'onAttachedToWindow'を呼び出す必要はありません。ありがとう。 – WenChao

0

で結ばれています。

あなたはAndroidのNの分割画面を使用し、AndroidManifest.xmlにおける活動のconfigChangesの値を設定する:decorviewであるため、変数「mAttachInfo」

"keyboardHidden|orientation|screenSize" 

onAttachedToWindowは、setContentViewに呼び出されますのウィンドウがNULLでない場合、rootViewdecorViewを追加するにはsetContentViewを呼び出し、addViewInner()にはdispatchAttachedToWindowが呼び出されます。

最後に、アクティビティonResume()の後、onAttachedToWindow()を再度呼び出さないでください。

関連する問題