アクティビティから、ListViewのDataAdapterのコンテンツを更新するために、45秒ごとにAsyncTaskを起動するハンドラーを作成しています。AsyncTaskはうまく機能し、ProgressUpdatesとToastメッセージを通じて進行状況をユーザーに通知し続けます。
スレッドのdoInBackgroundはファイアアンドフォーゲットであり、再利用できないため、45秒ごとに起動するAsyncTaskの新しいインスタンスをHanderから作成する必要があります。問題は、Handerが再作成され、AsyncTaskの新しいインスタンスが作成されたために画面が回転し、同時にメッセージが消えてしまうことです。そのため、ProgressUpdatesとToastメッセージの使いやすいユーザーの進行は圧倒的であり、ListViewの利用が困難になります。
そして、これを解決策として提案しないでください。android:screenOrientation="portrait"はオプションではありません。
頻繁に実行する必要があるものについては、AsyncTaskクラスではなく、カスタムThreadを使用する必要がありますか?ToDo:表示されていません。後で、センサーのonSensorChangedイベントからアダプターを更新して、ListView内の各場所の方位を更新する必要があります。毎回ユーザーに通知する必要がないため、個別のAsyncTaskクラスで実行します。デバイスのベアリングが変更されました。
AsyncThreadは再利用できないので、これはすべて間違っていますか?つまり、アクティビティでListViewを更新し、UIスレッドをオフにしておくための最良の方法は何ですか?