Android 应用程序启动时,BroadcastReceiver中的onReceive会触发

Android 应用程序启动时,BroadcastReceiver中的onReceive会触发,android,broadcastreceiver,Android,Broadcastreceiver,我制作了一个示例,发现若我在应用程序启动时用代码onReceive触发器注册接收器。但是如果我在上下文中注册了一个,它不知道为什么 Activity: public class MainActivity extends AppCompatActivity { private BroadcastReceiver mBroadcastReceiver; private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {

我制作了一个示例,发现若我在应用程序启动时用代码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!"));
}

}

试着这样做,并告诉我它是否有效

  • 在使用onCreate之前,只需创建一个BroadcastReceiver对象
  • 使用以下命令实例化onCreate()中的register对象
  • 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();
        }
    };