まず、問題の背景について簡単に説明します。
アクティビティのライフサイクルに沿ったバックグラウンドワーカーのライフサイクルの処理で問題が発生しました。最初の問題は、構成が変更されるたびに(これには画面の向きが含まれます)新しいアクティビティのインスタンスが作成されるため、ワーカーを古いインスタンスから新しいインスタンスにプルする必要があったことです。第二に、これは、作業者が進行状況ダイアログを表示することもあれば、ユーザーが操作しなければならないエラーダイアログを表示することもあるという事実によって複雑になります。アクティビティインスタンス全体ですべてのもの(ワーカー、ダイアログなど)を処理することは非常に複雑になっているため、今ではそれが間違った方法であることがはっきりとわかります。
正しい道は、そもそもその再インスタンス化を排除することだったと私は信じています。それが提供された場合、私は非常に単純で単純なライフサイクルで活動し、労働者や対話を追跡する必要はありませんでした。これはandroid:configChanges="..."
、マニフェストを挿入することで実現できます。
さて、問題は次のとおりです。
android:configChanges="..."
アクティビティにはすべての可能なもの(オリエンテーション、キーボード、その他すべて)が含まれていることを考えると、アクティビティが生きている間に1回だけインスタンス化され、バックグラウンドでも強制終了/再作成されないという保証はありますか?ドキュメントはこの点について明確ではありません。
そのような保証が成り立たない場合を誰かが知っているなら、私に知らせてください。そして最も重要なのは、それらに対してテストするためにそれらのケースをシミュレートする方法ですか?
ご回答ありがとうございます。
PS:ドキュメントには、「システムは必要に応じていつでもアクティビティを削除できる」と書かれていますが、ユーザーが戻ったときに新しいインスタンスの新しいストーリーになるため、ここでは考慮しません。この方法で削除されたアクティビティの画面。この場合、ユーザーがこの画面を開いたときのように、最初から簡単に開始します。