同樣,有關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