我想了解回調的概念。我在互聯網上搜索了回調,並且有很多使用接口的例子,一個類正在使用該接口調用另一個類的方法。但是我仍然無法得到回調的主要概念,使用回調的目的是什麼?Android中的回調是什麼?
回答
這裏是一個很好的tutorial,它描述回調和使用情況良好。
回調的概念,是通知一類的同步/異步如果在其他類中的一些工作已經完成。有人稱之爲好萊塢原則:「不要給我們打電話,我們給你打電話」。
這裏有一個例子:
class A implements ICallback {
MyObject o;
B b = new B(this, someParameter);
@Override
public void callback(MyObject o){
this.o = o;
}
}
class B {
ICallback ic;
B(ICallback ic, someParameter){
this.ic = ic;
}
new Thread(new Runnable(){
public void run(){
// some calculation
ic.callback(myObject)
}
}).start();
}
interface ICallback(){
public void callback(MyObject o);
}
A類調用B類獲得在一個線程中做了一些工作。如果線程完成了該工作,它將通知類A回調並提供結果。所以沒有必要進行輪詢或其他事情。一旦可用,你將會得到結果。
在Android回調中使用f.e.活動和片段之間。由於片段應該是模塊化的,你可以在片段中定義一個回調來調用活動中的方法。
非常感謝,現在我有一個回調的想法 –
非常感謝..這真的很簡單,很好的例子.... –
您先創建一個接口,然後定義一個方法,該方法將充當回調。在這個例子中,我們將有兩個班,一個CLASSA和另一CLASSB
接口:
public interface OnCustomEventListener{
public void onEvent(); //method, which can have parameters
}
聽者本身CLASSB(我們只設置在CLASSB聽衆)
private OnCustomEventListener mListener; //listener field
//setting the listener
public void setCustomEventListener(OnCustomEventListener eventListener) {
this.mListener=eventListener;
}
在CLASSA,我們開始怎麼樣監聽任何CLASSB已經告訴
classB.setCustomEventListener(new OnCustomEventListener(){
public void onEvent(){
//do whatever you want to do when the event is performed.
}
});
我們如何(在按下按鈕爲例)
if(this.mListener!=null){
this.mListener.onEvent();
}
附註:觸發來自CLASSB事件只要你想
回調可以在Java中非常有幫助你定製的監聽器可能有多達參數。
使用回調,您可以通知已經成功或錯誤已完成的異步操作的另一個類。
有人here之前討論。
在計算機編程中,回調函數是一段可執行代碼,它作爲參數傳遞給其他代碼,期望在某個方便的時候回調(執行)參數。調用可以是在同步回調中立即執行的,也可以在稍後發生,如在異步回調中那樣。
我使用有如下情況: 在UI我從一個按鈕的操作,對於如。用戶想要下載一個500MB的文件。 謝謝我將初始化後臺引擎(AsyncTask類)並將參數傳遞給他。 在用戶界面上,我將顯示阻止進度對話框並禁止用戶進行任何其他點擊。問題是:何時從UI中刪除阻止?答案是:當引擎成功或失敗時,可以通過回調或通知。
是什麼通知和回調之間的差異是另一個問題,但1:1是更快的回調。
CallBack Interface
用於Fragment
到Fragment
在android中的通信。
請參閱here以瞭解您的理解。
- 1. 什麼是java的回調?
- 2. 什麼是Spring JMS中的JmsTemplate回調?
- 3. 什麼是Java中的回調
- 4. ReactTransitionGroup鉤子中的回調是什麼?
- 5. 什麼是Qlikview中的回調公式?
- 6. 什麼是Java中的回調接口?
- 7. async.each - 回調是什麼?
- 8. 什麼是帶外回調?
- 9. 什麼是回調函數?
- 10. 什麼是回調輪詢?
- 11. 什麼是回調,我如何在Android中實現它們?
- 12. Rails的,什麼是包括的回調
- 13. 什麼是Android上的綁定器回調?
- 14. 爲什麼onReadRemoteRssi()回調的值是0?
- 15. jQuery Deferred回調的參數是什麼?
- 16. TwitterApiClient:什麼是POST的回調簽名?
- 17. 爲什麼javascript回調是異步的?
- 18. 什麼是不同的回調vs新的AsyncCallback(回調)?
- 19. 從ImageLoadingListener的onLoadingComplete回調中返回的視圖是什麼?
- 20. 什麼是JNI調用的android系統
- 21. 什麼是Android中
- 22. 爲什麼$ digest()不是從Parse回調中自動調用的?
- 23. 什麼是Python中最好的調度程序/回調庫?
- 24. 什麼是Android中的JobService
- 25. Android中的adb是什麼?
- 26. Android中的SharedPreferences是什麼?
- 27. Android中的包是什麼?
- 28. Android中的AsyncCallBack是什麼?
- 29. 什麼是Android中的getRotation?
- 30. Android中的AwesomePlayer是什麼?
鏈接:http://developer.android.com/guide/faq/commontasks.html#implementcallbacks –
這是一種實現Java中的lambdas的方式,因爲它們在Java 8之前不受支持。 –