同样,有关ayncTask的另一个问题。我正在做的事情正确吗?asyncTask中的共享变量
Class UpdatePersonActivity{
Person person;
.
.
.
.
.
private class UpdatePersonAsyncTask extends AsyncTask<Void, Void, Void> {
private ProgressDialog dialog;
private DBHandler dbHandler;
@Override
protected void onPreExecute() {
dialog = ProgressDialog.show(UpdatePersonActivity.this, "Please wait..", "working..", true);
dbHandler = new DBHandler(UpdatePersonActivity.this);
}
@Override
protected Void doInBackground(Void... params) {
dbHandler.open();
long id = dbHandler.updatePerson(person);
person.setId(id);
dbHandler.close();
return null;
}
@Override
protected void onPostExecute(Void result) {
dialog.dismiss();
Toast.makeText(UpdatePersonActivity.this, "Tenant "+person.getName()+" has been updated successfully!", Toast.LENGTH_SHORT).show();
finish();
}
}
基本上我有“人”变量这是在活动类和相同的变量被用来插入到DB和在DoInBackground更新其ID和相同的变量用于GUI目的
我可以这样做吗?我试过了,它可以工作,但这是我不应该做的事情?
谢谢
警告,在更新doInbackground()中的人时可能会出错。 最好使用publishProgress(值) 和onProgressUpdate(值)回调,你可以更新个人 – 2012-11-13 05:16:08