付費(fèi)下載
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、androidhandler2010-08-29 handler:1。按照時(shí)間計(jì)劃,在未來某時(shí)刻,對(duì)處理一個(gè)消。androidhandler2010-08-29 handler:1。按照時(shí)間計(jì)劃,在未來某時(shí)刻,對(duì)處理一個(gè)消。tDelayed(Runnable, long), sendMessage(Message),sendMessageAtTime(Message,long),and sendMessageDelayed(Message, long)messageHandlerhandleMessage(Message) 方法所處理。線前android一段時(shí)間了,為了進(jìn)一步android的應(yīng)
2、用是如何設(shè)計(jì)開發(fā)的,決定詳細(xì)研究幾個(gè)開源的 android 應(yīng)用。從一些開源應(yīng)用中吸收點(diǎn)東西,一邊進(jìn)行量的積累,androidHandler 在 android 里負(fù)責(zé)Handler 在 android 里負(fù)責(zé)發(fā)送和處理消息。它的主要用途按計(jì)劃發(fā)送消息或執(zhí)行某個(gè)Runnanble(使T 方法(常見于更新UI線程)默認(rèn)情況下,Handler 接受的是當(dāng)前線程下的消息循環(huán)實(shí)例(使用Handler(Looperlooper)Handler(Looperlooper,Handler.Callbackcallback)可以一條 Message 才會(huì)sendMessges 方法),然后由 handleMe
3、ssage()更新 UI)。倒計(jì)時(shí)使用 sendMessages 方法發(fā)送消息,然后在 HanleMessage 里更新 UI。Activity publicvoidonCreate(Bundle super.onCreate(savedInstantxt=(TextView)btnStop = (Button) findViewById(R.id.btnStopTime);Log.d(ThreadId,android.os.Handler Threadle、涉及較多的知識(shí)點(diǎn),我把一列舉在下面,將主要介+myHandler=new在onCreate方法中初始化元素個(gè)元素,myHandler+m
4、yHandler=new在onCreate方法中初始化元素個(gè)元素,myHandlernewHandler(this); 是 類的寫法來 重寫HandleMessage()方法了消息進(jìn)行處理(這就不必使因此Activity 必須實(shí)現(xiàn) android.os.Handler.Callback 接口還在將方法的在了Log 中用以和消息發(fā)送、處理時(shí)所作的線程進(jìn)行publicvoidonClick(View switch (v.getId() caseprivate synchronized void startTimer() timer=new/ TimerTask updateTimerValuesT
5、ask = new TimerTask() /publicvoidrun()/自定義的CallBack 模式。Task 繼承自TimerTask TaskupdateTimerValuesTasknewTask(this);timer.schedule(updateTimerValuesTask, 1000, /執(zhí)行耗時(shí)的倒計(jì)時(shí)任務(wù)private void updateTimerValues() total-Log.d(ThreadId, +Messagemsg=new/執(zhí)行耗時(shí)的倒計(jì)時(shí)任務(wù)private void updateTimerValues() total-Log.d(ThreadI
6、d, +Messagemsg=newBundledatenewBundle();(time,/另一種寫MessageBundledatenewBundle();/(time,publicvoid 類的編寫方法)ICallBack 接口和Task erface ITaskCallBack voidpublicclassTaskextendsTimerTaskprivate ITaskCallBack k(ITaskCallBack public publicclassTaskextendsTimerTaskprivate ITaskCallBack k(ITaskCallBack public
7、void setCallBack(ITaskCallBack publicvoidrun()實(shí)現(xiàn)caseBundleLog.d(ThreadId, Log.d(ThreadId, msgDate:+return可以看到 實(shí)現(xiàn) android.os.Handler.Callback 接口,其實(shí)就Void)()方法return可以看到 實(shí)現(xiàn) android.os.Handler.Callback 接口,其實(shí)就Void)()方法進(jìn)行重寫(類的一個(gè)區(qū)別是類的返回值運(yùn)行進(jìn)Threadle 進(jìn)行實(shí)Activity public class ThreadHandlerrActivity OnClickLis
8、tener ivity implements private TextView privateButtonbtnStart,Handler myHandler; TimerThreadtimerThread;/*Calledwhentheactivitycreated.public void onCreate(Bundle e) txt=(TextView)btnStop = (Button) findViewById(R.id.btnStopTime); Log.d(ThreadId, onCread:+myHandler=txt=(TextView)btnStop = (Button) f
9、indViewById(R.id.btnStopTime); Log.d(ThreadId, onCread:+myHandler=newhandleMessage(Message caseBundleLog.d(ThreadId, Log.d(ThreadId, msgDate:+returnpublic void onClick(View switch (v.getId() /自定義的timerThread=new caseR.id.btnStopTime: 自定義的caseR.id.btnStopTime: 自定義的線程類,通過傳入的 Handler,和 author*publiccla
10、ssTimerThreadextends定期執(zhí)行耗時(shí)操publicHandlerpublic TimerThread(Handler publicvoidrun()trycatcherruptedExceptione)/TODOAuto-generatedcatchMessagemsg=newcatcherruptedExceptione)/TODOAuto-generatedcatchMessagemsg=newBundledatenewBundle();(time,+這里繼承了Thread 類,也可以直接實(shí)現(xiàn) Runnable Tt 的各種方法是把一個(gè) Runnable 發(fā)送給消息隊(duì)列,它
11、將在到達(dá)時(shí)進(jìn)行Tpublicndlerivity implements OnClickListener, private TextView privateButtonbtnStart,HandlermyHandler; Timer timer;total=protected void onCreate(Bundle e) / TODO Auto-generated method txt=(TextView)btnStop = (Button) findViewById(R.id.btnStopTime); Log.d(ThreadId, onCread:/ TODO Auto-generate
12、d method txt=(TextView)btnStop = (Button) findViewById(R.id.btnStopTime); Log.d(ThreadId, onCread:myHandler = new Handler()public void handleMessage(Message caseBundleLog.d(ThreadId, Log.d(ThreadId, msgDate:+public void onClick(View switch (v.getId() ostDelayed(this, casepublicvoidtry catcherruptedE
13、xceptione)publicvoidtry catcherruptedExceptione)/TODOAuto-generatedcatchMessagemsg=newBundledatenewBundle();(time,Log.d(ThreadId, +Runnable Run后在進(jìn)入 HandleMessage() 。我還嘗試了另一種寫法,將 OST 過去packageimportndlerivity implements private TextView private Buttonndlerivity implements private TextView private But
14、ton btnStart, HandlermyHandler; Timer timer;total=TimerThread protected void onCreate(Bundle /TODOAuto-generatedmethode) txt=(TextView)btnStop = (Button) findViewById(R.id.btnStopTime); Log.d(ThreadId, onCread:myHandler = new Handler()public void handleMessage(Message caseBundleLog.d(ThreadId, +Log.
15、d(ThreadId,+public void onClick(View+Log.d(ThreadId,+public void onClick(View switch (v.getId() ostDelayed(this, casepublicvoidtry catcherruptedException e) /TODOAuto-generatedcatch 主要接受子線程發(fā)送的數(shù)據(jù), 解釋: 當(dāng)應(yīng)用程序啟動(dòng)時(shí),Android(UI線程) , UI控件,進(jìn)行事件分發(fā), 比如說, ButtonAndroidButton 主要接受子線程發(fā)送的數(shù)據(jù), 解釋: 當(dāng)應(yīng)用程序啟動(dòng)時(shí),Android(UI
16、線程) , UI控件,進(jìn)行事件分發(fā), 比如說, ButtonAndroidButton 象, 5Android閉. 需要把這些耗時(shí)的操作,放在一個(gè)子,因?yàn)樽泳€程涉UI更新,AndroidUI中更新,子操作的. 這個(gè)時(shí)候,HandlerHandler (UI),它與子線程可以通sedMessage()方法傳弟)Message 對(duì)象,(里面包含數(shù)據(jù)) , 把這些消息放入主線程隊(duì)列中,配合主線程進(jìn)行更新 UI。, 每 (一般是位于主線程它有兩個(gè)作用1): Runnable 某個(gè)地方執(zhí)行(2)Handler 中分發(fā)消息的一些方Message msg=new Bundledate=newBundle()
17、;/存放數(shù)據(jù) (time, total); Log.d(ThreadId, Log.d(ThreadId, +T 方法)”。tDelayed(Runnable)t 類方法允許你排列一個(gè) Runnable 對(duì)象到主線程隊(duì)列中, sendMessage類方法, 允許你安排一個(gè)帶數(shù)據(jù)的Message對(duì)象到隊(duì)列中,等待更新(1)子類需要繼承Handler類,并重寫handleMessage(Messagemsg) 方法,tDelayed(Runnable)t 類方法允許你排列一個(gè) Runnable 對(duì)象到主線程隊(duì)列中, sendMessage類方法, 允許你安排一個(gè)帶數(shù)據(jù)的Message對(duì)象到隊(duì)列中,
18、等待更新(1)子類需要繼承Handler類,并重寫handleMessage(Messagemsg) 方法,6/以上方法t 開頭的允許你處理Runnable 對(duì)/sendMessage()允許你處理Message 對(duì)象(Message 里可以包含數(shù)據(jù)MyThreadm=newnew8button=(Button)myHandler=new當(dāng)創(chuàng)建一個(gè)新的Handler實(shí)例時(shí)它會(huì)綁定到當(dāng)前線程和消息的隊(duì)列中,據(jù)Handler有兩個(gè)作用1)定時(shí)執(zhí)行Message和Runnalbe/(2):讓一個(gè)動(dòng)作,在不同的執(zhí)行它安排消息,1publicclassMyHandlerActivityivityButtonMyHandler4protectedvoidonCreate(Bundlee)*接受消息,此Handler*classMyHandlerextendsHandlerpublicMyHandler()*接受消息,此Handler*classMyHandlerextendsHandlerpublicMyHandler()publicMyHandler(LooperL)子類必須重寫此方法,publicvoidhandleMessage(Messagemsg)/TODOAuto-generatedmethodLog.d(MyHandler, /
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030氰化鈉行業(yè)市場(chǎng)供需分析及投資評(píng)估規(guī)劃分析研究報(bào)告
- 2025-2030歐洲精密儀器行業(yè)市場(chǎng)供需調(diào)研及策略規(guī)劃規(guī)劃分析報(bào)告
- 2025-2030歐洲新能源電動(dòng)汽車制造行業(yè)市場(chǎng)分析供需關(guān)系競爭研究投資規(guī)劃
- 2026北京資產(chǎn)管理有限公司業(yè)務(wù)總監(jiān)招聘1人備考題庫完整參考答案詳解
- 2025云南昆明發(fā)展投資集團(tuán)有限公司下屬公司招聘2人備考題庫及1套完整答案詳解
- 2025北京京東方機(jī)器人有限公司招聘備考題庫參考答案詳解
- 2026國家統(tǒng)計(jì)局儀征調(diào)查隊(duì)招聘輔助調(diào)查員1人備考題庫(江蘇)(含答案詳解)
- 2026河南鄭州市科學(xué)技術(shù)館招聘1人備考題庫及答案詳解一套
- 2026四川雅安市蘆山縣招聘縣屬國有企業(yè)總經(jīng)理1人備考題庫及參考答案詳解1套
- 2026年武漢市光谷第二小學(xué)校聘教師招聘備考題庫含答案詳解
- 農(nóng)村水庫改建申請(qǐng)書
- 光伏電站施工安全控制方案
- 2025年工業(yè)機(jī)器人維護(hù)與維護(hù)成本分析報(bào)告
- 柴油發(fā)動(dòng)機(jī)檢修課件
- 淡水魚類深加工創(chuàng)新創(chuàng)業(yè)項(xiàng)目商業(yè)計(jì)劃書
- 高寒地區(qū)建筑工程冬季施工技術(shù)規(guī)范研究
- 2025年中國電熱式脫皮鉗市場(chǎng)調(diào)查研究報(bào)告
- DBJT15-212-2021 智慧排水建設(shè)技術(shù)規(guī)范
- 新課標(biāo)文科全科-2026高考大綱TXT便利版
- (高清版)DBJ∕T 13-91-2025 《福建省房屋市政工程安全風(fēng)險(xiǎn)分級(jí)管控與隱患排查治理標(biāo)準(zhǔn)》
- 民辦學(xué)校退費(fèi)管理制度
評(píng)論
0/150
提交評(píng)論