怎麼是這樣的:
public interface DBRunnable {
public void executeDBTask();
public void postExecuteDBTask();
}
private class DBTask extends AsyncTask<DBRunnable, Void, DBRunnable> {
@Override
protected DBRunnable doInBackground(DBRunnable...runnables) {
runnables[0].executeDBTask();
return runnables[0];
}
@Override
protected void onPostExecute(DBRunnable runnable) {
runnable.postExecuteDBTask();
}
}
這將是這樣調用:
new DBTask().execute(new DBRunnable() {
@Override
public void executeDBTask() {
// execute your db code here
}
@Override
public void postExecuteDBTask() {
// run your post execute code here
}
});
的DBRunnables可以保持在一個地方讓代碼更容易閱讀和維護。
一個問題,如果我想有得到基於所取得的數據庫調用執行不同的任務是什麼。我的意思是我想要不同的OnPostExecute異步調用,如果我讀一條記錄vs寫一條記錄 –
我修改我的示例以顯示如何使用onPostExecute。如果您希望能夠同時運行多個DBRunnable,則需要將它們傳遞給DBTask的構造函數,以便doInBackground()和onPostExecute()可以遍歷可運行子集。如果你這樣做,AsyncTask的參數和結果已經過時並且可以是無效的。 –
Sory再次打開此帖,但這是最合適的答案,所以在這裏。這是什麼runnables [0] .executeDBTask();這是什麼意思?你會如何做到這一點? – JoaoFilipeClementeMartins