上次我给大家介绍了安卓第二大组件Service(服务)的使用,今天我给大家介绍安卓第三大组件-BroadcastReceiver的使用方法:
1:创建
广播的创建跟服务的创建一样,右键选择你的项目->new->other->android object->BroadcastReceiver然后取你广播类的名字点finish就完成了。系统会自动帮你配置好清单文件并创建一个广播类实现重写onReceive
2:注册广播
注册广播有2种方式一种是清单文件注册,写上要接受广播的过滤条件,代码如下
<receiver
android:name="com.example.wy14_broadcastreceivcer.MyReceiver"
android:enabled="true"
android:exported="true" >
<intent-filter>
<action android:name="org.broadcast.Action" />
</intent-filter>
</receiver>
第二种注册方法为代码注册通常我们可以在activity的生命周期的onstart方法注册广播在onstop的方法取消广播,这样的好处在于当你程序关闭之后就不会再接受你所需要接受的广播,代码如下
private MyReceiver receiver;
@Override
protected void onStart()
{
super.onStart();
receiver = new MyReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction("org.broadcast.Action");
registerReceiver(receiver,filter);
}
@Override
protected void onStop()
{
super.onStop();
unregisterReceiver(receiver);
}
3:发送广播
在前面我给大家介绍过了显示意图和隐式意图,如果你的广播是在你当前的应用程序可以用显示意图发送广播,如果是别的应用里面的,那么就可以用隐式意图去发送广播,只要有注册的广播的都可以接受的得到,且不分顺序,这种广播叫无序广播。现在假设我给广播发送一个当前日期,代码如下
public void send()
{
//访问自身app的方法
Intent intent = new Intent(MainActivity.this,MyReceiver.class);
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日"+"hh:mm:ss");
intent.putExtra("date", dateFormat.format(new Date()));
sendBroadcast(intent);
//隐式意图访问app的广播
// Intent intent = new Intent();
// SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日"+"hh:mm:ss");
// intent.putExtra("date", dateFormat.format(new Date()));
// intent.setAction("org.broadcast.Action");
// sendBroadcast(intent);
}
4:接收广播
当我们发送广播后广播类的onReceive的方法就会接受到广播数intent类,在这里我将接受到的当前日期已提示的方式显示到屏幕中,代码如下
public class MyReceiver extends BroadcastReceiver
{
public MyReceiver()
{
}
@Override
public void onReceive(Context context, Intent intent)
{
String time = intent.getStringExtra("date");
Toast.makeText(context, time, Toast.LENGTH_LONG).show();
}
}
这样就可以实现效果了
广播的基本使用方法介绍好了,下次我为大家介绍有序广播的使用方法
转载于:https://blog.51cto.com/7735447/1302884