[解決済み] ベストプラクティスです。方向転換中のAsyncTask
質問
AsyncTask
は、複雑なタスクを別のスレッドで実行するための素晴らしいものです。
しかし
AsyncTask
がまだ実行中である場合、現在の
Activity
は破棄され、再起動される。そして
AsyncTask
がそのアクティビティに接続されている場合、失敗して "強制終了" メッセージウィンドウが発生します。
そこで、これらのエラーを回避し、AsyncTaskが失敗するのを防ぐために、ある種の"ベストプラクティス"を探しています。
これまで見てきたのは
- 方向転換を無効にする。(絶対にこの方法で処理してはいけない。)
-
タスクを存続させ、新しいアクティビティ インスタンスで更新するには
onRetainNonConfigurationInstance
-
が発生したらタスクをキャンセルするだけ。
Activity
が破壊されたときに再開しActivity
が再び作成される。 - アクティビティインスタンスではなく、アプリケーションクラスにタスクをバインドする。
- プロジェクトで使用されているいくつかのメソッド(onRestoreInstanceState経由)。
いくつかのコード例です。
画面回転中のAndroid AsyncTasks、その1 と 第二部
問題を最もよく解決し、同様に簡単に実装できる最良の方法を見つけるのを手伝ってくれませんか?私はこれを正しく解決する方法を知らないので、コード自体も重要です。
どのように解決するのですか?
行う
NOT
使用
android:configChanges
を使用すると、この問題に対処することができます。これは非常に悪い習慣です。
行う
NOT
使用
Activity#onRetainNonConfigurationInstance()
のどちらかです。これはモジュール化されておらず
Fragment
-をベースにしたアプリケーションです。
できること
私の記事を読む
を使用して設定変更を処理する方法について説明しています。
Fragment
s. を保持することの問題を解決します。
AsyncTask
ローテーションの変更にまたがって、うまく 基本的には
AsyncTask
の中に
Fragment
を呼び出す。
setRetainInstance(true)
を実行します。
Fragment
を報告し、その
AsyncTask
の進捗状況や結果を、自分の
Activity
.
関連
-
プロセス 'command 'F:\sdkbuild-tools', 26.0.2 AAAPT.exe' finished with non-zero exit value 1
-
Android ProgressBarの色を変更する
-
アンドロイドスタジオソフトウェア使用詳細説明書
-
Android studio 制約レイアウト ConstraintLayout
-
[解決済み] 新しいAndroid Fragmentをインスタンス化するためのベストプラクティス
-
[解決済み] AsyncTaskのAndroidサンプル
-
[解決済み] ViewPagerとフラグメント - フラグメントの状態を保存する正しい方法は何ですか?
-
[解決済み] 匿名)内部クラスを使用することがリークセーフとなるのは、具体的にどのような場合ですか?
-
[解決済み】バックグラウンドタスク、プログレスダイアログ、オリエンテーションの変更 - 100%動作する解決策はありますか?
-
[解決済み】AsyncTaskは本当に概念的に欠陥があるのか、それとも私が何かを見逃しているだけなのか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
RuntimeException: アクティビティを開始できません ComponentInfo solution
-
を作ってください。*** makeするルールがない エラーの原因、分析、解決策
-
最新のandroidプロジェクトディレクトリにあるarmeabi-v7aとarmeabiの具体的な意味とその違いを教えてください。
-
Android開発で「Attempt to invoke virtual method 'XXX()' on null object reference」というヌルポインター例外に遭遇する。
-
ActivityはOnFragmentInteractionListenerを実装しなければならないに関する質問
-
telnet'が内部コマンドまたは外部コマンドとして認識されない 解決方法
-
アプリケーションがメインスレッドで過剰に作業している可能性があります。
-
android block certificate validation CertPathValidatorException: 認証パスのトラストアンカーが見つかりません
-
Android--shape--描画のコーナー、グラデーション、パディング、サイズ、ソリッド、ストロークのプロパティを指定する。
-
[解決済み] Androidで画面が回転しないようにする