android循环发送广播,Android跨进程通信广播(Broadcast)

广播是一种被动跨进程通讯的方式。当某个程序向系统发送广播时,其他的应用程序只能被动地接收广播数据。这就象电台进行广播一样,听众只能被动地收听,而不能主动与电台进行沟通,在应用程序中发送广播比较简单。只需要调用sendBroadcast方法即可。该方法需要一个Intent对象。通过Intent对象可以发送需要广播的数据。

先建一个android工程:sendbroadcast。在XML布局文件中放两个组件:EditText和Button,当单击按钮后,会弹出显示 EditText组件中文本的对话框,关闭对话框后, 会使用sendBroadcast方法发送消息,并将EditText组件的文本通过Intent对象发送出去。完整的代码如下:

public classMain extends Activity implements OnClickListener {privateEditText editText;

@Overridepublic voidonClick(View view) {new AlertDialog.Builder(this).setMessage(editText.getText().toString()).setPositiveButton("确定", null).show();//通过Intent类的构造方法指定广播的ID

Intent intent = new Intent("net.blogjava.mobile.MYBROADCAST");//将要广播的数据添加到Intent对象中

intent.putExtra("text", editText.getText().toString());//发送广播

sendBroadcast(intent);

}

}

发送广播并不需要在AndroidManifest.xml文件中注册,但接收广播必须在AndroidManifest.xml文件中注册 receiver。下面来编写一个接收广播的应用程序。首先建立一个android工程:receiver。然后编写一个MyReceiver类,该类是 BroadcastReceiver的子类,代码如下:

public classMyReceiver extends BroadcastReceiver {//当sendbroadcast发送广播时,系统会调用onReceive方法来接收广播

@Overridepublic voidonReceive(Context context, Intent intent) {//判断是否为sendbroadcast发送的广播

if ("net.blogjava.mobile.MYBROADCAST".equals(intent.getAction())) {

Bundle bundle=intent.getExtras();if (bundle != null) {

String text= bundle.getString("text");

Toast.makeText(context,"成功接收广播:" +text, Toast.LENGTH_LONG).show();

}

}

}

}

当应用程序发送广播时,系统会调用onReceive方法来接收广播,并通过intent.getAction()方法返回广播的ID,也就是在发送广播时Intent构造方法指定的字符串。然后就可以从Bundle对象中获得相应的数据了。

最后还需要在AndroidManifest.xml文件中注册receiver,代码如下:

在注册MyReceiver类时需要使用标签,android:name属性指定MyReceiver类,标签的android:name指定了广播的ID。

首先运行receiver程序,然后就可以关闭receiver程序了。接收广播并不依赖于程序的状态。就算程序关闭了,仍然可以接收广播。然后再启动 sendbroadcast程序。并在文本框中输入“android”,然后单击按钮,会弹出一个显示文本框内容的对话框,如图9所示。当关闭对话框后,会 显示一个Toast信息提示框,这个信息框是由receiver程序弹出的。如图10所示。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值