28
進行状況ダイアログとバックグラウンドスレッドがアクティブなときに画面の向きの変更を処理する方法
私のプログラムはバックグラウンドスレッドでいくつかのネットワークアクティビティを実行します。開始する前に、進捗ダイアログをポップアップします。ダイアログはハンドラーで閉じられます。ダイアログが表示されているときに(およびバックグラウンドスレッドが表示されているときに)画面の向きが変わる場合を除いて、これはすべて正常に機能します。この時点で、アプリはクラッシュまたはデッドロックするか、すべてのスレッドが終了するまでアプリがまったく機能しないという奇妙な段階に入ります。 画面の向きの変更を適切に処理するにはどうすればよいですか? 以下のサンプルコードは、私の実際のプログラムが行うこととほぼ一致します。 public class MyAct extends Activity implements Runnable { public ProgressDialog mProgress; // UI has a button that when pressed calls send public void send() { mProgress = ProgressDialog.show(this, "Please wait", "Please wait", true, true); Thread thread = new Thread(this); thread.start(); } public void run() { Thread.sleep(10000); Message …