0
當我開始一個活動,我會執行此操作AsyncTask以外的任何方式?
webservice.updateallCatNews();
此功能檢索在線數據庫中的數據的本地數據庫。結束時間不是固定的,取決於網速。
我想知道何時該動作完成執行。有時15,但有時10或20.我需要在完成後開始活動。
除了asynctask之外,任何函數都可以檢測到動作完成了嗎?
private class UpdatingNews extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {
webservice.updateallCatNews();
return null;
}
@Override
protected void onPostExecute(String result) {
}
}
Activity類
private UpdatingNews update;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_formnewuser);
webservice = new Database_WebService(this);
update = new UpdatingNews();
if (isOnline() == true) {
update.execute("...");
}
}
UpdateallCatNews類
public void updateallCatNews() {
try {
List<List_CategoryNews> newsCat = dbhelper.getAllNewsCategories();
for (List_CategoryNews nwCat : newsCat) {
int CatNewsID = nwCat.getCatID();
if (CatNewsID != 0) {
List_CategoryNews deleteNewsCat = new List_CategoryNews(
CatNewsID);
dbhelper.DeleteNewsCat(deleteNewsCat);
}
}
GetNewsCategory();
} catch (Exception ex) {
AlertDialog.Builder b = new AlertDialog.Builder(mContext);
b.setMessage(ex.toString());
b.show();
}
}
這個類裏面,有沒有其他的錯誤,因爲其他活動可以執行。
這如果()看起來像沒有運行
if(update.getStatus().equals(AsyncTask.Status.RUNNING));
爲什麼功能
webservice.updateallCatNews();
不執行?
您可以創建一個線程併爲其添加一個處理程序,該程序會在完成時將消息傳回給您的活動。爲什麼不使用AsyncTask? –
擴展一個線程並註冊您的活動實現的委託(例如一個接口)。調用基於webservice響應的回調 – Blackbelt
@DavidScott,我不知道爲什麼'doInBackground()'行動無法執行時,我使用AsyncTask但'onPostexecute()'它確實 –