android中實現非同步機制的方法有兩種,handler和asynctask。
handler在使用時,需要新開闢乙個執行緒,在任務完成以後,通過sendmessage()等方法通知ui執行緒進行介面更新。
相比起handler,asynctask顯得更加簡單,內部封裝了執行緒池、執行緒和handler。
我們通常是繼承asynctask並重寫其中的方法:
public abstract class asynctask
private void initview()
private void initdata()
@override
public void onclick(view v)
break;
default:
break;}}
static class mytask extends asynctask
/*** 執行執行緒任務前的操作
*/@override
protected void onpreexecute()
@override
protected long doinbackground(string... strings) catch (interruptedexception e)
} else
publishprogress((float) i);
}return (long) length;
}@override
protected void onprogressupdate(float... values)
activity.mprogressbar.setprogress(math.round(values[0]));
activity.mtextview2.settext("onprogress = " + values[0] * 1.0f / length);
}@override
protected void onpostexecute(long along)
activity.mprogressbar.setprogress(activity.mprogressbar.getmax());
activity.mtextview2.settext("完成了,這段話一共有 " + along + " 個字。");
}@override
protected void oncancelled(long along)
activity.mtextview2.settext("已取消");
}@override
protected void oncancelled()
}} 這裡使用靜態內部類+外部類的弱引用方式避免記憶體洩漏。
AsyncTask非同步任務
asynctask非同步任務怎麼寫 寫乙個類繼承asynctask,重寫方法 doinbackgroud 再new 這個類,執行物件 execute 在ui執行緒裡面寫這個類的實現方法 doinbackground有可能是新開的執行緒,有可能是執行緒池裡面的執行緒 執行順序 onpreexecute...
非同步任務(AsyncTask)
一 解決新執行緒無法更新ui組建問題的方案 為了解決新執行緒不能更新ui組建的問題,andorid提供了如下幾種解決方案 1.使用handler實現執行緒之間的通訊。mhandler new handler public class mythread extends thread 2.activit...
非同步任務AsyncTask
強調!以下只是我個人看法,如有錯誤的地方請文明指出 為避免主線程失去響應問題,android建議將耗時操作放在新的執行緒中,但是新的執行緒可能需要動態的更新ui元件,比如需要從網上獲取乙個網頁,讓後在textview上將其源 顯示出來,此時就要連線網路 獲取網路資料的操作放在新執行緒中完成。問題是獲...