« onResume()の経路 | トップページ | Android 4.0のAVDがSegmentation faultする(Ubuntu11.04) »

2011年10月13日 (木)

onPause()とonStop()の経路

勉強会の資料を作るついでに、
ActivityのonPause()/onStop()が
呼ばれる場所を調べてみた。

前回のonResume()と同じく、
個人メモ程度だけど・・。

関係者は同じくこれぐらいかな。
 android.app.Instrumentation
 android.app.Activity
 android.app.ActivityThread

ActivityをPause/Stopするのは、
こんなケースになるのかな。
(必要そうなところだけ抜粋)
関数の後にインデントがあるのは、
内訳って感じで・・。
(ifの中身もインデント)


ポーズする場合。
元々onSaveInstanceState()を見たかっただけなの。

ActivityThread.handlePauseActivity()
 if (userLeaving)
  performUserLeavingActivity()
   mInstrumentation.callActivityOnUserLeaving()
    activity.performUserLeaving()
     onUserInteraction()
     onUserLeaveHint()
 performPauseActivity(IBinder,?,?)
  performPauseActivity(ActivityClientRecord,*,*)
   mInstrumentation.callActivityOnSaveInstanceState()
    activity.performSaveInstanceState()
     onSaveInstanceState()
     saveManagerdDialogs()
   mInstrumentation.callActivityOnPause()
    activity.performPause()
     onPause()
   listeners.get(i).onPaused()
 ActivityManagerNative.getDefault().activityPaused()


再起動する場合。
これがどんな場合に発生するのか不明だけど、
一旦閉じてからの起動になるのかな。

handleRelaunchAcitivity()
 handleConfigurationChangede()
 performPauseAcitivity()
 handleDestroyAcitivity()
 handleLaunchActivity()


ストップする場合。
正直、onPauseと間違えて調べた・・。
(中途半端かも・・)

ActivityThread.handleStopActivity()
 performStopActivityInner()
  activity.performStop()
   mInstrumentation.callActivityOnStop()
    activity.onStop()
 updateVisibility()
 ActivityManagerNative.getDefault().activityStopped()


見えなくなる場合。
呼ばれるケースがあったのでついでに。

ActivityThread.handleWindowVisibility(?,false)
 performStopActivityInner() →上で。

詳しく知りたい方は、がんばって・・(謎)
Resumeと同じくGingerBread。

|

« onResume()の経路 | トップページ | Android 4.0のAVDがSegmentation faultする(Ubuntu11.04) »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/97274/42401920

この記事へのトラックバック一覧です: onPause()とonStop()の経路:

« onResume()の経路 | トップページ | Android 4.0のAVDがSegmentation faultする(Ubuntu11.04) »