ViewPager
にロードされたフラグメントがあります。この場合、各 "ページ"はカーソルの行からロードされます。各断片は、装置上の画像(JPEG)を示す。ユーザーがフラグメントを却下した場合(つまり、スワイプ/ページの変更、ヒット/アップ、またはアプリケーションを完全に閉じる)、書き込み用にJPEGファイルを開き、そのメタデータの更新を行うメソッドを呼び出す必要があります。実際の作業は、最終的にApache Commons Imagingライブラリによって処理されます。フラグメントonStopはUIスレッドで実行されます
私はこれを、各フラグメントのライフサイクルonStop()
ハンドラから私のsaveToFile()
メソッドを呼び出すことによって実装しました。 これは、ファイル操作全体がUIスレッド上で実行されることを意味しますか?このために私は間違いなくAsyncTask
を設定する必要がありますか?
何らかの理由でファイルが書き込まれた(いくつかのJPEGのために)長い時間(2分など)が必要です。何が起こるでしょうか? UIは再開する前にこのページ/フラグメントで待機(フリーズ)しますか?あるいは、プロセス(ファイルへの書き込み)は何とか「バックグラウンドで」続けますか?あるいは、プロセスはちょうど殺され、プロセスの途中で止まったでしょうか?
私は現在このワイヤード(onStop
、saveToFile()
を呼び出して、イメージングライブラリを呼び出してファイルを更新する)の方法はうまくいくと思われます。私はアプリを終了しても、私はまだトーストのテキストが "ファイルへの書き込み"とポップアップしているのを見ています。プロセスは決して邪魔されず、私はUIの遅れを経験しているとは言えません。
はいアクティビティとフラグメントのすべてのライフサイクルメソッドはメインスレッド(別名UIスレッド)で実行されます。これらの方法でビューを再生できることで確認できます。 – Sufian