Tôi cần đăng ký người nhận. Tôi đã sử dụng các mô hình sau:Mẫu đúng để đăng ký người nhận?
@Override
protected void onResume() {
super.onResume();
registerReceiver(myReceiver, new IntentFilter(...));
}
@Override
protected void onPause() {
super.onPause();
unregisterReceiver(myReceiver);
}
private BroadcastReceiver myReceiver = new BroadcastReceiver() {
...
});
tôi nhận được báo cáo sự cố từ thị trường về unregisterReceiver của tôi() gọi:
java.lang.IllegalArgumentException: Receiver not registered
Tôi nghĩ đây không phải có thể là có thể, nhưng có vẻ như đây là đúng mẫu thay thế:
private Intent mIntent;
@Override
protected void onResume() {
super.onResume();
if (mIntent == null) {
mIntent = registerReceiver(myReceiver, new IntentFilter(...));
}
}
@Override
protected void onPause() {
super.onPause();
if (mIntent != null) {
unregisterReceiver(myReceiver);
mIntent = null;
}
}
private BroadcastReceiver myReceiver = new BroadcastReceiver() {
...
});
Mẫu trên có đúng không? Tôi đoán nó có thể đăng ký thất bại, và chúng tôi phải giữ kết quả từ registerReceiver(), và kiểm tra nó trong onPause() trước khi thực hiện cuộc gọi để unregister()?
Cảm ơn
Tôi dựa sự thay đổi tắt của câu hỏi này: Problem with BroadcastReceiver (Receiver not registered error)
Tôi đã chỉ từng nhìn thấy mô hình đầu tiên ở trên, không bao giờ một trong những nơi bạn đánh dấu vào câu trả lời ý - bất kỳ làm rõ sẽ rất tuyệt.
nhờ Ok cho điều này, có ý nghĩa. – user291701