@Azrael: FCとANR

ページ

2010年11月18日木曜日

FCとANR

ユーザから見ると、どちらもエラーが発生しているように見えるので、
どちらも発生しないようにすべきだけど…

FC(ForceCloce、強制終了)
例外やエラーがアプリ内で処理されず、フレームワークまでスローされた場合に表示される。
OKボタンで閉じるしかない。アプリは終了される。
SIGSEGVでも表示されたような記憶があるけどあやふや。

・実行時例外が発生しないよう考慮する。(Nullチェック、範囲チェック等)
・エラーはOutOfMemoryEorrorがほとんどなので、メモリリークによる開放漏れが無いか確認をする。

極力発生しないようにするべきだが、すべての例外をキャッチするようなことは避ける。根本的な解決にはならない上に、不具合を発見するのが遅れる原因にもなる。例外をレポートする仕組みがあるのなら別。

ANR(ApplicationNotResponding、アプリケーションからの応答がない)
UIスレッドが5秒以上応答しなかったり、BroadcastReceiverの処理が10秒以内に終了しなかった場合に表示される。エラーが発生しているわけではない。(ただし、ほとんどのユーザはそうとは受け取ってくれない)
強制終了させるか、待機するかを選べる。

・UIスレッドやonReceive内では時間のかかる処理を行わない。

どちらもHandlerやAsyncTask、Service等で非同期処理を行うことでほぼ対応できるが、場合によってはフレームワーク内でも発生し、回避が困難な場合もある。対処する、しないはケースバイケースなんだろうけど、対処しない場合、言い訳が難しい。
.

0 件のコメント:

コメントを投稿