2012/04/12

Android:Activity状態遷移タイムアウトによるPAUSE状態への遷移


Activityの状態遷移にはタイムアウトが設けられています。
特にPAUSE状態遷移のタイムアウトは500msecとシビアです。
PAUSEはActivityの切替パフォーマンスに直接影響を与えるため、他の状態遷移より短い
タイムアウトが設けられています。
# ActivityStackクラスのPAUSE_TIMEOUT定数辺りが参考になります


タイムアウトが500msecであることで注意すべきポイントはLowMemoryKillerと状態保存です。
ActivityのPAUSE状態は生存優先度が低く、LowMemoryKillerによるkill対象となり易くな
ります。

つまり、onSaveInstance~onPauseのForeground優先度が保証されるのはonSaveInstance
開始から500msec間のみということになります。
onPauseの完走に500msec以上を要する場合、「onPauseの実行途中に突然LowMemoryKiller
にkillされた...」ということが起こりえます。

onPauseで永続化したいデータの保存処理はonSaveInstanceの開始から500msec以内に収め
るのが吉です。

以上です。