2013-03-24 16 views
6

Tôi đã tạo chế độ xem tùy chỉnh có thể được đặt ở các vị trí khác nhau trong ứng dụng. Tôi không thể tránh sử dụng BroadcastReceiver bên trong chế độ xem để nhận tin nhắn từ phần còn lại của ứng dụng.Đăng ký phát nội bộ trong chế độ xem tùy chỉnh

Tôi đã đọc nó không được đề xuất (Where should I unregisterReceiver in my own view?), nhưng trong trường hợp tôi chọn sử dụng nó là có một nơi để hủy đăng ký xem từ BroadcastManager?

Trả lời

5

Tôi đề nghị bạn sử dụng LocalBroadcastManager. Nó giống như một BroadcastReceiver có Intents chỉ có thể được nhìn thấy bên trong ứng dụng của bạn.

private BroadcastReceiver receiver = new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     // your code here 
    } 
}; 

@Override 
protected void onPause() { 
    LocalBroadcastManager.getInstance(this).unregisterReceiver(receiver); 
    super.onPause(); 
} 

@Override 
protected void onResume() { 
    LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(this); 
    IntentFilter filter = new IntentFilter(); 
    filter.addAction(MyClass.MY_ACTION); 
    lbm.registerReceiver(receiver, filter); 
    super.onResume(); 
} 
+0

Đó thực sự là những gì tôi đang làm, nhưng vì tôi đăng ký trong quá trình tạo chế độ xem tùy chỉnh (không phải hoạt động có onDestroy v.v.) - Tôi không thể tìm được nơi thích hợp để hủy đăng ký người nhận. Vì vậy, hiện tại tôi không:/ –

+3

Chế độ xem (hoặc chế độ xem tùy chỉnh) không có vòng đời như hoạt động hoặc dịch vụ, do đó bạn không thể biết khi nào nó bị hủy hoặc ẩn. Bạn nên kiểm soát tất cả các hành động đăng ký/hủy đăng ký của tất cả các chế độ xem của bạn từ hoạt động chứa chúng. – vggonz

+0

Tôi sẽ coi đây là câu trả lời, mặc dù tôi ước rằng chế độ xem tùy chỉnh có thể độc lập theo nghĩa này, Nó thực sự hạn chế ... Nếu ai đó có ý tưởng về điều tôi muốn nghe, cảm ơn. –

Các vấn đề liên quan