BroadcastReceiver 静态动态

静态 注册:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Intent intent = new Intent();
        //设置广播的名字(设置Action)
        intent.setAction("myBroadCast");
        //携带数据
        intent.putExtra("data","hello");
        //发送广播(无序广播)
        sendBroadcast(intent);
    }
}
public class BroadCastReceive extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals("myBroadCast")) {
            //接收到广播,取出里面携带的数据
            String str = intent.getStringExtra("data");
            System.out.println("接收到的广播的数据:" + str);
        }
    }
}
 <!--采用静态注册的方法,只要APP开启,就能够监听广播-->
        <receiver android:name=".BroadCastReceive">   <!--注明接受监听广播的文件-->
            <intent-filter>
                <action android:name="myBroadCast"></action>  <!--注明监听的广播的动作,可以添加多个动作-->

            </intent-filter>
        </receiver>

动态注册:

public class BroadCastReceive extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals("myBroadCastAction")) {
            //接收到广播,取出里面携带的数据
            String str = intent.getStringExtra("data");
            System.out.println("接收到的广播的数据:" + str);
        }
    }
}
public class MainActivity extends AppCompatActivity {

   private  BroadCastReceive mBroadCastReceive ;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

    }

    @Override
    protected void onResume() {
        super.onResume();

        //创建广播接受类实例化对象
        mBroadCastReceive = new BroadCastReceive();
        IntentFilter intentFiltet = new IntentFilter();
        //设置广播的名字(设置Action,可以添加多个要监听的动作)
        intentFiltet.addAction("myBroadCastAction");
        //注册广播,传入两个参数, 实例化的广播接受者对象,intent 动作筛选对象
        registerReceiver(mBroadCastReceive,intentFiltet);


        //新建intent 对象
        Intent intent = new Intent();
        //设置 动作
        intent.setAction("myBroadCastAction");        //发送Action
        //添加传递的参数
        intent.putExtra("data", "Hi!I am broadcastData!");
        sendBroadcast(intent);

    }

    @Override
    protected void onPause() {
        //取消注册
        unregisterReceiver(mBroadCastReceive);
        super.onPause();
    }
}

让app一直监听,可以用系统Action

public class MainActivity extends ActionBarActivity implements MyReceiver.MyListener {
    MyReceiver myReceiver;
    private TextView textview;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        IntentFilter intentFilter = new IntentFilter();
        intentFilter.addAction(Intent.ACTION_BATTERY_CHANGED);//电池
        myReceiver = new MyReceiver();
        registerReceiver(myReceiver, intentFilter);//注册即可
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        unregisterReceiver(myReceiver);
    }
}
public class MyReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
       //处理监听动作...
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值