broadcastReceiver传值的用法详情

注意:广播的发送都是全局发送的,跨应用的,所以我们在使用的时候不能使用下面的action传参数,需要添加参数

 

intent.setComponent(new ComponentName("com.archermind.fm", "com.archermind.fm.MusicWidgetBroadcastReceiver"));

 

第一步:自定义广播

public class MyReceiver extends BroadcastReceiver {

@Override

public void onReceive(Context context, Intent intent) {

Bundle bundle = intent.getExtras();

int count = bundle.getInt( "count" );

Log.v("MainActivity", "Count is " + count);}}

第二步:声明和注册广播

private MyReceiver receiver = null;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate( savedInstanceState );

setContentView( R.layout.activity_main );

//启动服务

startService(new Intent(MainActivity.this, MyService.class));

//注册广播接收器

receiver=new MyReceiver();

IntentFilter filter=new IntentFilter();

filter.addAction("com.project.moli.demobroad.MyService");

MainActivity.this.registerReceiver(receiver,filter);

}

@Override

protected void onDestroy() {

//结束服务

stopService(new Intent(MainActivity.this, MyService.class));

super.onDestroy();

}

 

第三步:补充服务端

public class MyService extends Service {

private int count = 0;

private boolean tag=false;

@Override

public void onCreate() {

super.onCreate();

new Thread(new Runnable() {

@Override

public void run() {

while (!tag) {

try {

Thread.sleep(1000);

} catch (InterruptedException e) {

e.printStackTrace();

}

count++;

Log.v("MyService", "Count is " + count);

 

//发送广播

Intent intent=new Intent();

intent.putExtra("count", count);

intent.setAction("com.project.moli.demobroad.MyService");

sendBroadcast(intent);}}

}).start();

}

@Override

public IBinder onBind(Intent intent) {return null;}

@Override

public void onDestroy() {

super.onDestroy();

count=0;

tag = true;

Log.v("MyService", "on destroy");

}}

第三步:清单文件中注册服务(注意资源回收 广播和服务)

<service

android:name=".MyService"

android:enabled="true"

android:exported="true"

tools:ignore="WrongManifestParent"></service>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值