概念を理解するためにAsyncTaskを実装しています。コードは機能していますが、私が望む方法ではありません。私は文書を調べましたが、私が何をしているのかを正確に特定することはできません。
コード:
private class NewThread extends AsyncTask<Integer, Integer , String>
{
@Override
protected String doInBackground(Integer... params) {
Log.d(TAG,"inside doInBackground");
for (int i=0;i<params.length;i++)
{
try {
publishProgress(i);
Thread.sleep(6000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return "Finished";
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
Toast.makeText(getBaseContext(), result, Toast.LENGTH_SHORT).show();
Log.d(TAG,"inside onPostExecute");
}
@Override
protected void onProgressUpdate(Integer... values) {
// TODO Auto-generated method stub
super.onProgressUpdate(values);
Toast.makeText(getBaseContext(), "Done " + values[0], Toast.LENGTH_SHORT).show();
Log.d(TAG,"inside onProgressUpdate");
}
私は見るだけ Done 0
ですFinished
。私が期待していたのは、Done0、Finished、Done1、Finished、Done2です。終了しました....またはDone0Done1Done2....終了しました。
それを行うには、コードを何に変更する必要がありますか?それも可能ですか?
ボタンを使用してAsyncTaskを呼び出しています。
public void onClick(View v) {
// TODO Auto-generated method stub
new NewThread().execute(4);
}
ありがとう