私は他のウィンドウリークの投稿を読み、そこに何が役に立たないかを示唆したことを試しました。
A、B、Cの3つのアクティビティがあります。アクティビティAは、ユーザーから情報を収集します。アクティビティBは、別のスレッドのサーバーと通信している間、回転するProgressDialogを表示します。スレッドが終了すると、ProgressDialogを閉じて、次のアクティビティを開始します。アクティビティCは、サーバーからユーザーへの情報を表示します。アクティビティBは、ユーザーがCからヒットバックしたときにAにフォールバックするように設定されています。
これらのタスクが別々のアクティビティにあることが重要です。
現在のところ、次のシナリオを除いて、アプリはほとんどの場合正常に動作します。アクティビティAに戻る前にユーザーがアクティビティCで向きを変更すると、ウィンドウリークが原因でアプリがクラッシュします。
- istart Cの前にアクティビティBのonPause()でProgressDialogを閉じています。
- ハンドラーを使用してメインスレッドと別のスレッドでProgressDialogを閉じようとしました。
- ユーザーがCで向きを変更しない場合、ウィンドウリークは発生しません。
何か案は?TIA