开发者日记(2016年01月07日11:52:28):
关于android 广播的学习:
普通广播:
Intent intent = new Intent();
intent.putExtra("msg", "这是一条普通广播");
intent.putExtra("msg2", "这是一条普通广播2");
intent.setAction("BC_One");
sendBroadcast(intent);//普通广播
有序广播:
Intent intent2 = new Intent();
intent2.putExtra("msg", "这是一条有序广播");
intent2.setAction("BC_One");
sendOrderedBroadcast(intent2,null);//有序广播, intent + 权限
其中 putExtra(String string1,String string2) string1为信息的标志位,string2为信息内容。
setAction(“BC_One”)是这条广播的标志位。
异步广播已经移除。
广播的接收需要注册,分为静态注册和动态注册。
静态注册(Androidmanifest.xml 作用于全局(手机所有软件 ps:暂时的理解))
<receiver android:name=".BC1">
<intent-filter>
<!--优先级 priorit-->
<action android:name="BC_One"/>
</intent-filter>
</receiver>
其中 为广播的优先级,优先级数值越高(0-1000),广播优先级越高。
动态注册(Activity中 程序关闭后注意需要销毁)
IntentFilter intentFilter=new IntentFilter("BC_One");
bc1=new BC1();
registerReceiver(bc1,intentFilter);
IntentFilter intent过滤器 只留下名为xx的广播(发送时 标志位为setAction(“”))
@Override
protected void onDestroy()
{
super.onDestroy();
unregisterReceiver(bc1);//销毁广播
}
接收广播:
public class BC1 extends BroadcastReceiver
{
private static String s1,s2;
@Override
public void onReceive(Context context, Intent intent)
{
s1=intent.getStringExtra("msg");
s2=intent.getStringExtra("msg2");
Log.i("tag",s1+" "+s2);
}
}
BroadcastReceiver是抽象类,需要新建一个Class继承BroadcastReceiver类,并重写onReceive方法。
广播接收时不能做耗时操作,广播的维持时间只有5-10秒,不可开辟子线程。如需要耗时操作应写入Service中。