私はいくつかの画像をダウンロードしてスライドショーを開始する必要があるAndroidアプリに取り組んでいます。画像をダウンロードするには、AsynTask を使用しています。画像がダウンロードされるとすぐに、ハンドラーを使用してスライド ショーを開始します。しかし、向きの変更中はハンドラーを制御できません。ハンドラー オブジェクトは AsyncTask クラスで定義されているためです。
以下は、私が行ったことの大まかなシナリオです。
クラス A はアクティビティを拡張します
クラス B async = new ClassB(this);
async.execute();
クラス B は AsyncTask を拡張し、OnPageChangeListener、OnTouchListener を実装します
onPreExecute() -------このメソッドには何もありません
doInBackground -------ここから画像をダウンロードしています
onPostExecute ---------Handler はここから開始され、スライド ショーを実装するために 5 秒ごとに実行されます
今問題:
向きの変更中に、AsyncTask が 1 回だけ呼び出されるか、画像が再度ダウンロードされるようにしました。これは、向きの変更中にハンドラーが実行されていないためです。
開始された最初のハンドラー オブジェクトは実行を続けますが、変更は画面に反映されません。
AsyncTask を使用して画像をダウンロードする方法で実装することを考えていました。ダウンロードが完了すると、ClassA にフォーカスが置かれ、ハンドラーが ClassA に実装されます (画像がダウンロードされた場合のみ)。