1. ホーム
  2. android

[解決済み] スクリーンローテーション中にAsyncTaskを処理するには?

2023-04-14 05:30:22

質問

インスタンスの状態を保存する方法や、画面回転中にアクティビティが破壊された場合の対処方法について、多くの本を読みました。

多くの可能性があるようですが、AsyncTaskの結果を取得するためにどれが最も効果的なのかがわかっていません。

私は、単純に再スタートするいくつかのAsyncTasksを持っており、その中で isFinishing() メソッドを呼び出し、アクティビティが終了している場合、何も更新されません。

問題は、失敗または成功する可能性のあるWebサービスへのリクエストを行う1つのタスクがあり、タスクを再起動すると、ユーザーに金銭的損失をもたらすということです。

どのようにこれを解決しますか?可能な解決策の利点または欠点は何ですか?

どのように解決しますか?

私の最初の提案は、画面の回転 (デフォルトの動作) でリセットされるアクティビティが実際に必要であることを確認することです。回転に関する問題が発生するたびに、私はこの属性を <activity> タグにこの属性を追加して、うまくいきました。

android:configChanges="keyboardHidden|orientation"

これは奇妙に見えますが、これはあなたの onConfigurationChanged() メソッドに渡すもので、もし提供しなければ、レイアウトを再測定する以外には何も行いません。