私はたくさんグーグルします、しかし今私は尋ねることに決めました。
私のアクティビティは、AsyncTaskを使用してインターネットから画像をダウンロードするという単純なことを1つだけ実行します。
しかし、解決方法がわからないという問題がたくさんあります。
1.] AsyncTaskが画像をダウンロードした後、ユーザーが画面を回転します。この画面の回転をどのように処理すればよいですか?アクティビティの再作成後に使用できるように画像を一時的に保存する場所はどこですか?
画面の向きをロックしたり(android:screenOrientation = "landscape")、自分で処理したりしたくない(android:configChanges = "orientation")。
写真をどこかに保存したいだけです。
onRetainNonConfigurationInstance()とgetLastNonConfigurationInstance( )を使用して実行できることはわかっていますが、現在は両方とも非推奨になっています。バンドルは文字列(シリアル化可能)データ用に作成されているため、画像には適していません。画像をデータベースやどこかに保存することはできますが、不要です。どこかでローダーでできると読んだのですが、どうしたらいいのかわかりません。出来ますか?
2.] AsyncTaskが画像をダウンロードしている間、ユーザーは画面を回転させます。
AsyncTaskにダウンロードを続行してほしい。ダウンロードが完了すると、AsyncTaskはonPostExecuteメソッドの新しい(再作成された)アクティビティに画像を保存する必要があります。
AsyncTaskがアクティビティの内部クラスである場合、それは機能すると思います。ただし、内部クラスにしたくない場合は、アクティビティへの参照を、たとえば変数に保存する必要があります。しかし、AsyncTaskのコンストラクターのパラメーターとしてActivityへの参照を送信し、Activityが画面の回転後に再作成された場合、AsyncTaskの変数は元のアクティビティを参照するため、新しいアクティビティはダウンロードされた画像を認識せず、ダウンロードを再開する必要があります..
または、AsyncTaskは画像をダウンロードするのに悪い選択ですか?他のものを使うべきですか?サービス?
だから..これらの問題を解決する方法は?多くのアプリ開発者もこれを解決しなければならないと確信しています。しかし、私にとってはすべてギリシャ語です:(