localbroadcastmanager không được dùng nữa, thay vào đó hãy sử dụng các mẫu có thể quan sát được.
androidx.localbroadcastmanager
đang bị phản đối trong phiên bản 1.1.0
Lý do
LocalBroadcastManager
là một xe buýt sự kiện toàn ứng dụng và xử lý các vi phạm lớp trong ứng dụng của bạn; bất kỳ thành phần nào cũng có thể lắng nghe các sự kiện từ bất kỳ thành phần nào khác. Nó kế thừa các giới hạn trường hợp sử dụng không cần thiết của BroadcastManager hệ thống; các nhà phát triển phải sử dụng Ý định mặc dù các đối tượng chỉ sống trong một quy trình và không bao giờ rời khỏi nó. Vì lý do tương tự, nó không tuân theo BroadcastManager có tính năng.
Những điều này thêm vào một kinh nghiệm phát triển khó hiểu.
Thay thế
Bạn có thể thay thế việc sử dụng LocalBroadcastManager
bằng các triển khai khác của mẫu có thể quan sát được. Tùy thuộc vào trường hợp sử dụng của bạn, các tùy chọn phù hợp có thể LiveData
hoặc các luồng phản ứng.
Lợi thế của LiveData
Bạn có thể mở rộng một LiveData
đối tượng bằng cách sử dụng mẫu singleton để bọc các dịch vụ hệ thống để chúng có thể được chia sẻ trong ứng dụng của bạn. Đối LiveData
tượng kết nối với dịch vụ hệ thống một lần, và sau đó bất kỳ người quan sát nào cần tài nguyên chỉ có thể xem LiveData
đối tượng.
public class MyFragment extends Fragment {
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
LiveData<BigDecimal> myPriceListener = ...;
myPriceListener.observe(this, price -> {
// Update the UI.
});
}
}
Các observe()
phương pháp vượt qua đoạn, đó là một thể hiện của LifecycleOwner
, như là đối số đầu tiên. Làm như vậy biểu thị rằng người quan sát này bị ràng buộc với Lifecycle
đối tượng được liên kết với chủ sở hữu, có nghĩa là:
Nếu đối tượng Vòng đời không ở trạng thái hoạt động, thì người quan sát sẽ không được gọi ngay cả khi giá trị thay đổi.
Sau khi đối tượng Vòng đời bị hủy, người quan sát sẽ tự động bị xóa
Thực tế là LiveData
các đối tượng nhận thức được vòng đời có nghĩa là bạn có thể chia sẻ chúng giữa nhiều hoạt động, đoạn và dịch vụ.