Asyn Taskを使用してバックグラウンドで作業を行ってから、onProgressUpdate()を使用してUIを更新しています。問題は、1対1で呼び出されていないことです。つまり、コードの次の行は、呼び出されて作業を完了する場合もありますが、少し遅れて作業を完了する場合もあります。I want to know that can we make it sure that the onProgressUpdate() must execute when we want it
onProgressUpdate()をいつ実行するか、または少し遅れて実行するかは、デバイスのCPUによって異なります。助けてください。よろしくお願いします。
2 に答える
doInBackground内から手動でpublishProgressを呼び出す必要があります。
Androidドキュメントから
doInBackground(Params ...)、onPreExecute()の実行が終了した直後にバックグラウンドスレッドで呼び出されます。...このステップでは、publishProgress(Progress ...)を使用して、1つ以上の進行状況を公開することもできます。これらの値は、UIスレッドのonProgressUpdate(Progress ...)ステップで公開されます。
http://developer.android.com/reference/android/os/AsyncTask.htmlを参照してください
を呼び出すonProgressUpdate()
と、実際には、別のスレッドでコードを実行するためのリクエストをハンドラーに送信します。
スレッドを切り替えるのに最適なタイミングを決定するのはAndroidOS次第であり、そうして初めてコードが実行されます。
Thread
現在のスレッドに一時停止を要求することで、どういうわけか強制的に切り替えることができます。元:
Thread.sleep(1);
ただし、次に実行されるスレッドが、実行されるUIスレッドになるかどうかはわかりませんonProgressUpdate()
。
よろしく。