简单 易懂的了解android中的Broadcast Receiver
2017-07-20 19:39
387 查看
写这篇博客的目的首先偶是预防以后自己忘了可以随时拿出来看,其次 能帮到一些人也是不错的..
1.android中的广播分为:
①标准广播
特点: 广播发出后所有的接收器都可以 同时 接收到 广 播, 而且无法拦截
②有序广播
特点:广播发出之后,接收者有先后之分,并且前面的接收者可以拦截广播,导致后面的接收的接收不到
2.广播是通过一方发送另一方接收的,发送的一方只需要给Intent一个意图,像”com.xu.text”,然后调用sendBroadcast(intent)方法就可以了(有序广播调用sendOrderedBroadcast(intent,null);),接收广播者(让一个类继承BroadcastReceiver,然后实现BroadcastReceiver的onReceice()方法即可,广播内容在该方法中操作)
3.广播有俩种注册方式:
静态注册(AndroidManifest.xml中)
动态注册(代码实现)
动态注册:
这里通过点击Button发送一条广播,发送广播的代码很简单,
前面讲了
接收广播:
在另一个Module的Activity中:
registerReceiver();方法用来接收广播,里面需要俩个参数,一个BroadcastReceiver,一个IntentFilter,把这俩个对象传进去..广播的内容会在BroadcastReceiver执行具体处理,动态注册要记得取消注册广播,在onDestory()中 unregisterReceiver(broadcast);取消注册
静态注册:
在AndroidManifest.xml中,
enabled表示是否允许启用这个广播接收器
exported表示是否允许接收本应用程序以外的广播 true表示允许
在android studio中可以点击file–new–Other—BraodcastReceiver直接创建一个广播接收者,AndroidManifest.xml中只需要把
意图写出来就可以了,发送方和动态一样…
1.android中的广播分为:
①标准广播
特点: 广播发出后所有的接收器都可以 同时 接收到 广 播, 而且无法拦截
②有序广播
特点:广播发出之后,接收者有先后之分,并且前面的接收者可以拦截广播,导致后面的接收的接收不到
2.广播是通过一方发送另一方接收的,发送的一方只需要给Intent一个意图,像”com.xu.text”,然后调用sendBroadcast(intent)方法就可以了(有序广播调用sendOrderedBroadcast(intent,null);),接收广播者(让一个类继承BroadcastReceiver,然后实现BroadcastReceiver的onReceice()方法即可,广播内容在该方法中操作)
3.广播有俩种注册方式:
静态注册(AndroidManifest.xml中)
动态注册(代码实现)
动态注册:
public class MainActivity extends AppCompatActivity implements View.OnClickListener { private Button button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button= (Button) findViewById(R.id.btn); button.setOnClickListener(this); } @Override public void onClick(View v) { Intent intent=new Intent("com.example"); sendBroadcast(intent); } }
这里通过点击Button发送一条广播,发送广播的代码很简单,
Intent intent=new Intent("com.example"); sendBroadcast(intent);
前面讲了
接收广播:
在另一个Module的Activity中:
public class MainActivity extends AppCompatActivity { private IntentFilter intentFilter; private BroadcastTest broadcast; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); intentFilter=new IntentFilter(); //选择要接收哪个广播 意图添加进去,保持一致 intentFilter.addAction("com.example"); broadcast=new BroadcastTest(); registerReceiver(broadcast,intentFilter); } @Override protected void onDestroy() { super.onDestroy(); unregisterReceiver(broadcast); } class BroadcastTest extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { Toast.makeText(context, "收到其他应用的广播", Toast.LENGTH_SHORT).show(); } } }
registerReceiver();方法用来接收广播,里面需要俩个参数,一个BroadcastReceiver,一个IntentFilter,把这俩个对象传进去..广播的内容会在BroadcastReceiver执行具体处理,动态注册要记得取消注册广播,在onDestory()中 unregisterReceiver(broadcast);取消注册
静态注册:
在AndroidManifest.xml中,
<receiver android:name=".MyReceiver" android:enabled="true" android:exported="true"> <intent-filter> <action android:name="com.example"/> </intent-filter> </receiver>
enabled表示是否允许启用这个广播接收器
exported表示是否允许接收本应用程序以外的广播 true表示允许
在android studio中可以点击file–new–Other—BraodcastReceiver直接创建一个广播接收者,AndroidManifest.xml中只需要把
<intent-filter> <action android:name="com.example"/> </intent-filter>
意图写出来就可以了,发送方和动态一样…
相关文章推荐
- Android中Intent具体解释(二)之使用Intent广播事件及Broadcast Receiver简单介绍
- Android SharedPreferences与BroadcastReceiver简单结合
- android中的BroadcastReceiver简单用法
- 黑马程序员------------------Android SharedPreferences与BroadcastReceiver简单结合(手机号码自动加拨)
- Android BroadcastReceiver的简单使用
- Android 中 BroadcastReceiver以及 Broadcast的简单应用
- BroadcastReceiver简单总结(android四大组件之一)
- Android BroadcastReceiver的简单实用
- Android Service、Activity、BroadcastReceiver简单使用
- Android四大组件之BroadcastReceiver(广播)简单总结
- Android 中你所需要了解掌握的--四大组件之BroadcastReceiver详解
- android BroadcastReceiverd的简单使用
- Android BroadcastReceiver 的简单应用
- Android BroadcastReceiver介绍
- Android的广播(BroadcastReceiver)
- Android Binder通信机制简单了解
- Android四大基本组件之一 ,广播(broadcast receiver)---有序广播
- Android BroadcastReceiver
- Android杂谈(24)Service+BroadcastReceiver+数据库+HttpURLConnection实现断点续传(下)
- Android第二讲——Intent、四大组件(Activity、BroadcastReceiver、ContentProvider、Service(IntentService))