1

私のアプリには、サーバーから常に更新されているバックグラウンド モデル (一種の DB) があります。私の問題は、このモデルに従ってデータを更新するさまざまなアダプターがあることです。モデルが更新されるたびに、アクティビティにブロードキャストを送信して、アダプターに通知します (notifyDataSetChanged)。これは 90% の時間で完全に機能し、残りの 10% は通常、UI スレッドが非常にハードに動作しているとき (インスタンスの onActivityResume)、スレッドに更新する UI がたくさんあるときです。次のエラーが発生します。

「スレッド: メイン、例外: アダプターのコンテンツが変更されましたが、ListView は通知を受け取りませんでした......アダプターのコンテンツがバックグラウンド スレッドからではなく、UI スレッドからのみ変更されていることを確認してください。」

私の質問は次のとおりです。アダプターを操作し、バックグラウンド スレッドから更新する必要があるある種の DB を維持するためのベスト プラクティスは何ですか?

10倍

4

1 に答える 1

1
  1. notifyDataSetChangedUI スレッドから呼び出していることを確認してください。
  2. UI スレッドからのみアダプターのコンテンツを更新していることを確認してください。

UIHandlerスレッドとそのメッセージ キューを使用して、他のバックグラウンド スレッドから UI スレッドを使用してデータ モデルに更新を送信できます。詳細はこちらAndroid Handlers

于 2013-08-26T16:33:16.287 に答える