■OnDestroyが呼ばれても、プロセスがなくなるとは限らない
ActivityのライフサイクルでOnDestroyが呼ばれても、プロセスは残る。
理由は、プロセス生成の電力コストを下げるため、できるだけ再利用したいからだそうだ。
いつアプリのプロセスは終了するのか。
LowMemoryKillerというカーネルのドライバがメモリ不足を検知したとき、
使われていないアプリを停止させる。この時である。
開発時に気をつけること、
staticクラス変数は、LowMemoryKillerがプロセスを停止するまで、維持されること。
逆の発想では、LowMemoryKiller次第で、いつでもstaticクラス変数が破棄されること。
プロセスやstaticクラス変数が、処理中に破棄されては困るなら、
サービスとして作成するのがシンプルな方法の一つである。
0 件のコメント:
コメントを投稿