Tôi muốn hiểu khái niệm gọi lại. Tôi đã tìm kiếm trên internet về callbacks và có rất nhiều ví dụ sử dụng giao diện, và một lớp đang gọi một phương thức của lớp khác bằng cách sử dụng giao diện đó. Nhưng tôi vẫn không thể có được khái niệm gọi lại chính, mục đích của việc sử dụng gọi lại là gì?Gọi lại trong Android là gì?
Trả lời
Đây là số tutorial đẹp, mô tả callbacks và trường hợp sử dụng tốt.
Khái niệm gọi lại là thông báo cho một lớp đồng bộ/không đồng bộ nếu một số công việc trong một lớp khác được thực hiện. Một số gọi nó là nguyên tắc Hollywood: "Đừng gọi chúng tôi, chúng tôi gọi cho bạn".
Dưới đây là một ví dụ:
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);
}
Class A Class B gọi để có được một số công việc thực hiện trong một chủ đề. Nếu Thread hoàn thành công việc, nó sẽ thông báo cho Class A về việc gọi lại và cung cấp kết quả. Vì vậy, không cần phải bỏ phiếu hay gì đó. Bạn sẽ nhận được kết quả ngay khi chúng có sẵn.
Trong Android Callbacks được sử dụng f.e. giữa các hoạt động và mảnh vỡ. Vì Fragments nên là mô đun, bạn có thể định nghĩa một cuộc gọi lại trong các phương thức Fragment to call trong Activity.
Cảm ơn rất nhiều, bây giờ tôi có ý tưởng gọi lại –
Cảm ơn rất nhiều..Đây là một ví dụ rất đơn giản và đẹp mắt .... –
Trước tiên, bạn tạo giao diện, sau đó xác định một phương thức, phương thức này sẽ hoạt động như một cuộc gọi lại. Trong ví dụ này, chúng ta sẽ có hai lớp, một lớp classA và một ClassB
Interface:
public interface OnCustomEventListener{
public void onEvent(); //method, which can have parameters
}
người nghe chính nó trong ClassB (chúng tôi chỉ đặt người nghe trong ClassB)
private OnCustomEventListener mListener; //listener field
//setting the listener
public void setCustomEventListener(OnCustomEventListener eventListener) {
this.mListener=eventListener;
}
trong lớpA, cách chúng tôi bắt đầu lắng nghe vì bất cứ điều gì classB phải thông báo
classB.setCustomEventListener(new OnCustomEventListener(){
public void onEvent(){
//do whatever you want to do when the event is performed.
}
});
làm thế nào để chúng ta kích hoạt một sự kiện từ ClassB (ví dụ trên nút nhấn)
if(this.mListener!=null){
this.mListener.onEvent();
}
T.B. nghe tùy chỉnh của bạn có thể có nhiều thông số như bạn muốn
Callback có thể rất hữu ích trong Java.
Sử dụng gọi lại, bạn có thể thông báo cho Lớp khác về hành động không đồng bộ đã hoàn thành với thành công hoặc lỗi.
Nó đã được thảo luận trước here.
Trong lập trình máy tính, gọi lại là một đoạn mã thực thi được chuyển thành đối số cho mã khác, dự kiến sẽ gọi lại (thực thi) đối số vào một thời điểm thuận tiện. Lệnh gọi có thể ngay lập tức như trong một cuộc gọi lại đồng bộ hoặc nó có thể xảy ra vào lúc sau, như trong một cuộc gọi lại không đồng bộ.
Tôi đang sử dụng trong trường hợp sau: Trong giao diện người dùng, tôi có một hành động từ nút, ví dụ: người dùng muốn tải xuống tệp 500mb. Cảm ơn tôi sẽ khởi tạo công cụ nền (lớp AsyncTask) và truyền tham số cho anh ta. Trên giao diện người dùng, tôi sẽ hiển thị hộp thoại tiến trình chặn và tắt người dùng để thực hiện bất kỳ nhấp chuột nào khác. Câu hỏi đặt ra là: khi nào cần xóa chặn khỏi giao diện người dùng? câu trả lời là: khi động cơ kết thúc với thành công hay thất bại, và điều đó có thể với callbacks hoặc thông báo.
Sự khác biệt giữa thông báo và gọi lại là một câu hỏi khác, nhưng 1: 1 nhanh hơn gọi lại.
CallBack Interface
được sử dụng cho thông tin Fragment
đến Fragment
giao tiếp trong Android.
Tham khảo here để bạn hiểu.
- 1. Android TTS onUtteranceMọi lại gọi lại không được gọi là
- 2. gọi lại trong android?
- 3. Python song song: Gọi lại là gì?
- 4. jQuery: "Gọi lại giá trị" là gì?
- 5. Giao diện gọi lại trong Java là gì?
- 6. Gọi lại Android SyncAdapter
- 7. Android hình ảnh gọi lại dữ liệu là null
- 8. Adb trong Android là gì?
- 9. socket.io socket.set và socket.get - đối số gọi lại là gì?
- 10. Sự khác biệt giữa móc và gọi lại là gì?
- 11. Cuộc gọi Collections.checkedList() trong java là gì?
- 12. AwesomePlayer trong Android là gì?
- 13. Uri.parse là gì trong android
- 14. Gọi/cc là gì?
- 15. PhoneGap Android Plugin: Thành công & Thất bại Gọi lại không được gọi là
- 16. Android: AudioRecord Class Sự cố: Gọi lại không bao giờ được gọi là
- 17. Tạo trình xử lý gọi lại để xử lý nhiều cuộc gọi lại trong Android
- 18. => được gọi là gì trong Scala?
- 19. Chỉ ghi lại giọng nói của người gọi trong android
- 20. Cửa sổ Android là gì?
- 21. Android: Gọi lại với thành phần WebView?
- 22. Dịch vụ gọi lại cho hoạt động trong android
- 23. Thực hiện gọi lại phương thức trong Android
- 24. Android - Quay lại cuộc gọi Hoạt động
- 25. Việc sử dụng "#process" gọi lại trong api dạng drupal là gì?
- 26. Các trường hợp sử dụng cho các chức năng đóng/gọi lại trong JavaScript là gì?
- 27. "Gọi lại" trong C là gì và chúng được triển khai như thế nào?
- 28. Chiến lược tốt để xử lý các cuộc gọi lại không đồng bộ trên Android là gì?
- 29. "Gọi theo tên" là gì?
- 30. Phương pháp __del__ là gì, Cách gọi nó là gì?
Liên kết: http://developer.android.com/guide/faq/commontasks.html#implementcallbacks –
Đây là cách triển khai lambdas trong Java vì chúng không được hỗ trợ cho đến khi Java 8. –