Android回調

Android中的回調其實就是:

A類調用B類的方法,B類需要時間處理,當B類處理完成後通過調用A類的方法把結果回傳給A類。


舉個網上很流行的例子:

你到一個商店買東西,剛好你要的東西沒有貨,於是你在店員那裏留下了電話,過了幾天店裏有貨了,店員就打了你的電話,然後你接到電話後就到店裏去取了貨。
在這個例子裏,你的電話號碼就叫回調函數,你把電話留給店員就叫登記回調函數,店裏後來有貨了叫做觸發了回調關聯的事件,店員給你打電話叫做調用回調函數,你到店裏去取貨叫做響應回調事件。


示例代碼

  • 回調監聽
public interface CallbackListener {

    void method1();

    void method2();

}
  • B類:將結果通過方法回調給調用方
public class AssistClass {

    public boolean doSomething(final CallbackListener listener){

        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    Thread.sleep(1000);
                    listener.method1();
                    Thread.sleep(1000);
                    listener.method2();
                }catch (Exception e){
                    Log.i("yico",e.toString());
                }
            }
        }).start();

        return true;
    }

}
  • A類:註冊回調,調用B類方法
public class ActivityCallback extends AppCompatActivity implements CallbackListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_callback);
        Button btn_start = (Button) this.findViewById(R.id.btn_start);


        btn_start.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                AssistClass c = new AssistClass();
                boolean b = c.doSomething(ActivityCallback.this);
                Log.i("yico", "b = " + b);
            }
        });

    }

    @Override
    public void method1() {
        Log.i("yico", "method1");
    }

    @Override
    public void method2() {
        Log.i("yico", "method2");
    }

}
發佈了32 篇原創文章 · 獲贊 8 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章