BroadcastReceiver
大家对BroadcastReceiver 最熟悉的似乎是:
sendBroadcast(Intent)
registerReceiver(BroadcastReceiver,IntentFilter)
BroadcastReceiver 作为一个独立的class 会有一些棘手的问题 挡在大家面前
1. 如何把得到的信息返回给某个Thread
2. 代码比较零散 有一些阅读障碍
所以说 BroadcastReceiver 最好作为内部类
[代码]
1. 先定义一些供 Broadcast 与 Message 有关的字串 供BroadcastReceiver使用
public class BroadcastColumn {
//Broadcast format definition: Broadcast_[destination]
public final static String BROADCAST_TaskB = "Broadcast_TaskB";
//Message format definition: Message_[what]
public final static String MESSAGE_STRING = "Message_string";
}
2. 定义 MessageListenerHelper extends BroadcastReceiver 并把 registerReceiver() 也放入其中
public class MessageListenerHelper extends BroadcastReceiver {
Context context;
MessageListenerHelper listener;
//construct
public MessageListenerHelper(Context c){
context = c;
//to instance it
listener = this;
}
public void registerAction(String action){
IntentFilter filter = new IntentFilter();
filter.addAction(action);
context.registerReceiver(listener,filter);
}
@Override
public void onReceive(Context arg0, Intent arg1) {
// TODO Auto-generated method stub
Bundle b = arg1.getExtras();
if(b.containsKey(BroadcastColumn.MESSAGE_STRING)){
String string = b.getString(BroadcastColumn.MESSAGE_STRING);
Log.d("TAG",string);
}
}
}
3. 定义 MessageListenerHelper 实例 并 注册
MessageListenerHelper listener = new MessageListenerHelper(this);
listener.registerAction(BroadcastColumn.BROADCAST_TaskB);
done!
分享到:
相关推荐
`BroadcastReceiver`作为Android四大组件之一,在系统与应用之间扮演着关键的信息传递角色。不同于Activity等具有用户界面的组件,`BroadcastReceiver`主要负责监听并响应特定事件。这些事件可以来源于系统或第三方...
1. 创建一个新的BroadcastReceiver类,继承自BroadcastReceiver,并重写`onReceive()`方法。在这个方法中,你会处理接收到的Intent信息。 ```java public class MyAndroidReceiver extends BroadcastReceiver { @...
BroadcastReceiver作为四大组件之一(Activity、Service、ContentProvider、BroadcastReceiver),其特点是被动接收数据,即它不会主动去寻找事件,而是等待事件的到来。这种特性使得BroadcastReceiver能够处理各种...
在标题“Android Activity 作为事件类”中,我们聚焦的是将Activity作为一个事件监听对象来处理用户输入和系统事件。这允许我们更直接地响应用户操作,提升用户体验。 在Android中,事件处理主要通过两种方式实现:...
BroadcastReceiver的主要功能是监听并接收应用内部或外部发送的广播消息,然后根据接收到的消息采取相应的行动。Android广播分为广播发送者和广播接收者两个角色。 1. **广播接收者的功能和应用场景** - **跨组件...
BroadcastReceiver作为广播接收者,主要用于监听并处理系统或者应用发送的广播消息。这种机制使得不同组件间即使在不同进程下也能进行通信,极大地增强了系统的可扩展性和灵活性。 广播发送者和接收者的关系基于...
(1)、将内部类(广播类)作为MyBroadcastReceiver类的成员变量,方便activity使用 (2)、对外接口类(如:ScreenStateListener)作为MyBroadcastReceiver类的成员变量 (3)、接口具有home键、锁屏、解屏的状态方法 ...
集合类如果仅提供了添加元素的方法而没有相应的删除机制,尤其是在作为全局性变量存在时(如静态属性、全局性的Map等),很可能会导致内存占用持续增加。例如,一个全局HashMap用于存储临时数据,但在数据不再需要后...
内部类是定义在另一个类内部的类,它可以访问外部类的所有成员,包括私有成员。内部类可以是静态的,也可以带有访问修饰符。编译后,内部类会被拆分为独立的类文件。因此,内部类可以与外部类共享相同的成员名称,...
Activity作为用户界面,Service用于后台持久运行的任务,而BroadcastReceiver则负责接收系统或自定义广播事件。单例模式是一种设计模式,它保证一个类只有一个实例,并提供一个全局访问点。将这三者结合使用,可以...
【Android中为什么要经常使用内部类】 在Android开发中,内部类被广泛使用,原因主要有以下几点: 1. **封装性**:内部类可以更好地封装特定功能,避免污染外部类的命名空间,使得代码结构更加清晰,易于维护。 2....
2. 内部实现BroadcastReceiver来监听下载进度和状态变化,并可能提供回调接口供调用者使用。 3. 可能还包含了暂停、恢复、取消下载的功能。 4. 错误处理和日志记录,使开发者更容易调试和解决问题。 使用封装后的...
例如,将Context传给静态对象或在非静态内部类中使用Activity作为上下文,都会增加泄漏的风险。在上述代码示例中,静态Drawable变量sBackground持有了Activity的引用,即使Activity已被销毁,仍不能被释放。 2. **...
《Android内部培训教材》是一份全面且深入的教育资源,旨在帮助开发者、学生或者对Android开发感兴趣的人士掌握这个全球最受欢迎的移动操作系统的核心技术。这份教材不仅涵盖了基础概念,还涉及了高级开发技巧,使得...
这份500强公司的Android内部学习资料是一份极为珍贵的学习资源,主要涵盖了Android开发的核心概念、原理和技术。作为全球广泛使用的移动操作系统,Android为开发者提供了丰富的API和工具,使其能够构建功能强大的...
BroadcastReceiver类需要继承自系统的BroadcastReceiver,并重写onReceive()方法来处理接收到的广播。注册可以在AndroidManifest.xml中静态注册,也可以在代码中动态注册。静态注册的广播在应用启动时自动激活,而...
通常,BroadcastReceiver应该作为单独的组件存在,仅处理广播事件。 **注册BroadcastReceiver** BroadcastReceiver可以通过两种方式注册: 1. **静态注册**:在AndroidManifest.xml中声明BroadcastReceiver。这种...
3. **匿名内部类与监听器**:匿名内部类会隐式持有对外部类的引用,导致外部类无法被回收。解决方案是使用弱引用,或者将内部类改为静态内部类。 4. **BroadcastReceiver和Service**:未正确注销BroadcastReceiver或...
具体来说,需要将`IBind`参数作为实参,调用`IInterface`类的`Stub`内部类的`asInterface()`方法,以获取`Iinterface`类的对象,进而调用接口方法。 #### 七、HTTP通信 **作用**:实现客户端与服务器之间的通信。 ...