Tôi có một bộ thu phát sóng đang được kích hoạt ngay khi nó được đăng ký (và sau đó được kích hoạt lại bằng onPause/onResume), chắc chắn đây là hành vi sai? Tôi đã bỏ lỡ một cái gì đó ở đây?BroadcastReceiver onReceive được kích hoạt khi đăng ký
class FooActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
broadcastReceiver = new FooBroadcastReceiver();
intentFilter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
}
@Override
protected void onResume() {
super.onResume();
registerReceiver(connectivityReceiver, intentFilter);
}
@Override
protected void onPause() {
super.onPause();
unregisterReceiver(connectivityReceiver);
}
class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (connectivityAction(intent)) {
Log.d("footag", "onReceive");
}
}
private boolean connectivityAction(Intent intent) {
return ConnectivityManager.CONNECTIVITY_ACTION.equals(intent.getAction());
}
}
không có gì sai trong đó. Có một loo k tại tài liệu: 'http: // developer.android.com/training/monitoring-device-state/connection-monitoring.html' –
@Adam' MyBroadcastReceiver' là tĩnh trong ví dụ của bạn đúng không? – Blundell
Ngoài ra, bạn có thể thực hiện điều này 'NetworkInfo networkInfo = intent.getParcelableExtra (ConnectivityManager.EXTRA_NETWORK_INFO);' để thu thập thêm thông tin về lý do BroadcastReciever của bạn được gọi là – Blundell