android 非同步回調機制

來源:互聯網
上載者:User

android事件處理:
基於監聽,基於回調。
基於監聽,是為android介面組件綁定特定的事件監聽器。主要處理一些特定的事件。
基於回調,時重寫android組件特定的回調方法,或者重寫activity的回調方法。android為絕大部分介面組件都提供了事件響應的回調方法。可以用於處理一些具有通用性的事件。

對於基於監聽的事件處理模型來說,事件來源和事件監聽器是分離的,當事件來源上發生特定事件之後,該事件交給事件監聽器負責處理,對於基於回調的事件處理模型來說,事件來源和事件監聽器時統一的,當時間源發生特定事件之後,該事件還是有事件來源本身負責處理。
例如:boolean onKeyMultiple(int keyCode,int repeateCount,KeyEvent event)用於響應按鍵重複點擊。官方API支出,它總是返回false,沒有handle,必須重寫才能實現。

委託機制需要事件來源,事件和監聽。而回調機制難以理解,網上通俗的說法是:A類持有B類引用,A調用B的方法C,然後B類中反過來調用A類中的方法D,D就叫回調方法。其實D正是回調介面中的方法。

根據這種思路的理解,我寫了個簡單的樣本,方便自己瞭解。

A有一個策劃方案,需要B去完成。B還有其他工作要做,只有做完了才能去做這個策劃方案。B完成策劃方案後,調用A的方法,把方案交給A。

A類:需要實現回調介面,並調用B的一個方法

public class A implements CallBack{/** * A類持有B類的一個引用 */private B b;public A(B b){this.b=b;}/** * 執行非同步任務的方法 * @param ask */public void ask(final String ask){//類比非同步任務,同時進行兩項任務new Thread(new Runnable() {@Overridepublic void run() {//1   調用B類方法,完成擷取方案b.excuteMessage(A.this, ask);//2   執行其他任務task();}}).start();}/** * 其他任務 */public void task(){System.out.println("---------");}/** * 得到解決方案 * 回調方法 */@Overridepublic void sovle(String result) {System.out.println(result);}}

B類:被調用的方法需要帶有一個回調介面的參數,並調用A類的一個方法(回調方法)

public class B {/** * 介面做參數的方法 * @param cb 回調介面 * @param ask 問題 */public void excuteMessage(CallBack cb,String ask){System.out.println("問題是:"+ask);//經過一段時間,方案已產生String result = "方案1";//B類中反過來調用A類中的方法cb.sovle(result);}}

回調介面:

/** * 回調介面 * @author DB * */public interface CallBack {/** * 回調方法 * @param result */public void sovle(String result);}

main:

public class Test {public static void main(String[] args) {B b = new B();//B類註冊回調方法A a = new A(b);//A類實現回調介面//A類引用調用自身方法a.ask("ask");}}


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.