我正在制作一个样本并发现如果我在应用启动时在代码onReceive触发器中注册接收器。但如果我在上下文中注册一个,那不是为什么?
Activity:
public class MainActivity extends AppCompatActivity {
private BroadcastReceiver mBroadcastReceiver;
private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String message = intent.getExtras().getString("SomeString");
Toast.makeText(MainActivity.this, message, Toast.LENGTH_SHORT).show();
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
protected void onResume() {
super.onResume();
mBroadcastReceiver = new SomeReceiver();
registerReceiver(mBroadcastReceiver, new IntentFilter(WifiManager.WIFI_STATE_CHANGED_ACTION));
LocalBroadcastManager.getInstance(this).registerReceiver(mMessageReceiver,new IntentFilter("DanMan"));
}
@Override
protected void onPause() {
super.onPause();
unregisterReceiver(mBroadcastReceiver);
LocalBroadcastManager.getInstance(this).unregisterReceiver(mMessageReceiver);
}
}
接收器:
public class SomeReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.d("receiver", "action :" + intent.getAction());
intent.setAction("DanMan");
LocalBroadcastManager.getInstance(context).sendBroadcast(intent.putExtra("SomeString", "Hello world!"));
}
}
答案 0 :(得分:0)
尝试这样做,让我知道它是否有效
private BroadcastReceiver mMessageReceiver;
mMessageReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String message = intent.getExtras().getString("SomeString"); Toast.makeText(MainActivity.this, message, Toast.LENGTH_SHORT).show(); } };