2

データベースを使用して、検索フォームの状態を保持しています。onPauseメソッドを使用してデータを永続化し、onResumeメソッドを使用してデータを復元しています。私の意見では、状態の復元と永続化はブロック操作である必要があるため、UIスレッドでデータベース操作を実行する予定です。これは一般的に推奨されないことですが、操作は迅速である必要があり、非同期で実行すると、UIの動作に一貫性がなくなる可能性があると思います。

何かアドバイス

4

2 に答える 2

3

遅い操作が実行されている間、アプリケーションがユーザー入力を受け入れないようにしたい場合でも、UIスレッドでそれらを受け入れたくはありません。これには2つの理由があります。

  1. 完全に応答しないUIは大きな問題です。ユーザーをプログラムとの対話から遠ざける必要がある場合は、何かが実際に起こっていることをユーザーに保証する必要があります。それ以外のものは、アプリケーションにバグがあると解釈される可能性があります。必要に応じて、アプリケーションの動作中にダイアログ、トースト、プログレスバーを使用します。
  2. Androidは、ハングしていると思われるアプリケーションを強制終了するオプションをユーザーに提供します。アプリケーションの通常の動作が行われているときに、これが発生することは望ましくありません。
于 2012-11-17T16:56:56.383 に答える
0

ブロック操作にしたい場合でも、何かが起こっていることをユーザーに示す必要があります。UIスレッドがブロックされると、画面はユーザーのタッチ操作に反応しなくなります。Sp、永続化と復元が完了するまで、メソッドとメソッドに無期限の進行状況バーを表示できます。そして明らかに、別のスレッドでそれを行う必要があります。UIスレッドがしばらく応答しない場合、Androidがエラーを出す可能性があるためです。onPause()onResume()
Application Not Working

于 2012-11-17T16:46:51.570 に答える