通信机制
来源:互联网 发布:windows 调试模式 编辑:程序博客网 时间:2024/06/05 02:21
一、广播
1、动态广播 应用启动后才有效
1)、定义一个意图过滤器指定接收的广播内容
intentFilter = new IntentFilter();intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
2)、注册广播到活动中去,需要指定广播接收器和意图过滤器参数
networkChangeReceiver = new NetworkChangeReceiver();registerReceiver(networkChangeReceiver, intentFilter);
3)、编写广播接收器类实现具体逻辑
class NetworkChangeReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context arg0, Intent arg1) {// TODO Auto-generated method stubConnectivityManager connectionManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);NetworkInfo networkInfo = connectionManager.getActiveNetworkInfo();if (networkInfo != null && networkInfo.isAvailable()) {Toast.makeText(MainActivity.this, "network is available",Toast.LENGTH_SHORT).show();} else {Toast.makeText(MainActivity.this, "network is unavailable",Toast.LENGTH_SHORT).show();}}}
4)、取消注册
protected void onDestroy() {super.onDestroy();unregisterReceiver(networkChangeReceiver);}
2、静态广播 通过开机自动启动,实现不打开应用即可监听
1)、编写广播接收器类实现具体逻辑
public class BootCompleteReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {Toast.makeText(context, "network changes", Toast.LENGTH_LONG).show();}}
2)、在Manifest清单文件中<application>标签下添加<receiver>注册
<receiver android:name=".BootCompleteReceiver" > <intent-filter> <action android:name="android.intent.action.CONNECTIVITY_CHANGE" /> </intent-filter> </receiver>
3、发送自定义广播
1)、编写广播接收器类实现具体逻辑
public class MyBroadcast extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {Toast.makeText(context, "收到自定义广播", Toast.LENGTH_LONG).show();}}
2)、在Manifest清单文件中添加<receiver>注册广播
<receiver android:name=".MyBroadcast" > <intent-filter> <action android:name="MyBroadcast" /> </intent-filter> </receiver>
3)、主活动中发送广播
Intent intent=new Intent("MyBroadcast");sendBroadcast(intent);
4、发送有序广播(android4.0以后取消拦截功能)
1)、新建另一个项目注册上述广播接收器(并编写具体逻辑),则在原项目中发送广播时,新项目也会接收到广播内容,此为标准广播,即所有接收器均可收到
2)、更改发送广播语句
Intent intent=new Intent("MyBroadcast");sendBroadcast(intent,null);
3)、更改注册语句,为过滤器增加android:priority提升优先级
<receiver android:name=".MyBroadcastReceiver"><intent-filter android:priority="100" ><action android:name="com.example.broadcasttest.MY_BROADCAST"/></intent-filter></receiver>
4)、更改逻辑语句,接收后增加截断广播的语句
public class MyBroadcast extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {Toast.makeText(context, "收到自定义广播", Toast.LENGTH_LONG).show();abortBroadcast();}}
5、使用本地广播
1)、使用LocalBroadcastManager类管理发送广播和注册接收广播来实现
2)、获取实例,发送广播、注册监听
localBroadcastManager = LocalBroadcastManager.getInstance(this);
localBroadcastManager.sendBroadcast(intent); //
localBroadcastManager.registerReceiver(localReceiver, intentFilter);
0 0
- 通信机制
- CHtmlView的通信机制
- CHtmlView的通信机制
- ACE通信机制
- CHtmlView的通信机制
- CUDA通信机制
- (转)进程通信机制
- UNIX通信机制
- 进程通信-消息机制 .
- Larbin的通信机制
- 消息通信机制NSNotificationCenter
- 消息通信机制NSNotificationCenter
- android中的通信机制
- Java线程通信机制
- 消息通信机制NSNotificationCenter
- 消息通信机制NSNotificationCenter
- Java多线程通信机制
- netlink通信机制分析
- 让Ecshop网店系统用户自动登陆
- 自定义通用Adapter适配ListView GridView
- DAO层,Service层,Controller层、View层
- 浅拷贝和深拷贝
- init rtl8367
- 通信机制
- c++ explicit
- C标准库(1)
- PS学习笔记(三)——蒙版的使用
- 工作中的log4j
- 关于'MAMapKit/MAMapKit.h' file not found的解决方法(图文演示)
- OC第十天 内存管理高级
- SVN版本冲突解决详解
- ZOJ2975 Kinds of Fuwas