加上这篇介绍Android广播的,我的BLOG中就对Android中四大组件Activity、BroadcastReceiver、ContentProvider、Service都做了介绍,感兴趣的同学可以翻阅我之前的博客对这些内容进行了解。今天主要介绍Android中广播(BroadcastReceiver)的基本使用,同时附上一个Demo,Demo覆盖除了ContentProvider之外其他三个组件的综合使用场景。在这篇文章中,你可以了解到:
1.广播是什么、干嘛用的、如何用;
2.如何结合Service以及Activity配合BroadcastReceiver使用,以及注意事项;
3.如何使用Dialog风格的Activity;
OK,下面描述一个功能需求进入我们的主题:
需求:后台运行一个服务在监听是否有新消息到来,如果有新消息,则不管当前用户界面处于系统中哪个地方,都需要弹出一个对话框来提示用户有新消息,并且用户点击对话框后要求进入指定的处理界面。
实现上面这个功能需求,需要用到Service、BroadcastReceiver、Dialog风格的Activity。Service用来在后台检测是否有新消息,如果检测到,则广播一则消息,广播接受者接收到以后对消息进行处理并弹出对话框,具体流程就是这样。
这里有一点需要注意的是,耗时的操作不能放在BroadcastReceiver的onReceive方法里面,如果在该方法里面处理的时间超过10秒,系统就会报出异常,如果有耗时操作应该放在Service的新开线程里面执行,另外,Service是和Activity同级别的,只是它没有可见界面,也就是说,如果在Service里面有耗时操作也应该开启新的线程来处理,不要把Service理解成是一个后台线程。
广播的两种注册方式:
1.静态注册
静态注册是指在Mainifest中配置注册广播,通过静态方式注册的广播生命周期贯穿于整个应用程序,即使当前应用程序没有运行,如果接收到了广播消息,该应用程序也可以被启动,静态注册方式不依赖于其他组件。
<receiver android:name=".MainBroadcastReceiver">
<intent-filter>
<action android:name="com.ryantang.receiver"/>
</intent-filter>
</receiver>
其中的action就是触发广播的动作名。
2.动态注册
动态注册是指改广播在依附的Activity或其他组件进行注册,通常在代码中通过registerReceiver方法注册,动态注册的广播声明周期与所在的组件(Activity)一样,如果当前Activity被finish了,则广播也随之失效了 。在Activity的onResume中注册广播,在onStop中注销广播:
@Override
protected void onResume() {
super.onResume();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(MY_ACTION);
//动态注册广播
registerReceiver(receiver, intentFilter);
}
@Override
protected void onStop() {
super.onStop();
//注销广播
unregisterReceiver(receiver);
}
另外还有一个知识点就是使用Dialog风格的Activity,效果和使用AlertDialog一样,但是环境不一样,传统的AlertDialog必须在其父窗口,通常是在某一个Activity中使用,而Dialog风格的Activity不受这个限制,之所以要说明这个,是因为结合之前将的需求,要使系统收到新的信息后在任何界面弹出对话框,那就只能在广播的onReceive方法中弹出对话框,就只能使用Dialog风格的Activity。使用方法只需在一般的Activity配置中加上一句属性即可:
<activity
android:name=".DilaogActivity"
android:theme="@android:style/Theme.Dialog" />
以上是介绍了一些基本知识和本Demo解决的问题,具体代码请下载Demo源码查看,同时附上Demo的界面截图:
Demo源码下载地址:点击下载
作为辛苦劳动成果,设置了1分的下载小费,没分的同学可以想办法获取积分,好的社区需要大家一同建设,杜绝伸手党!
加入我们的或微信公众账号请查看:Ryan's
zone公众账号及
觉得文章对你有用,点击右下角的转发按钮分享给更多人!
同时欢迎关注我的新浪微博和我交流:@唐韧_Ryan
分享到:
相关推荐
在Android应用开发中,Activity和Service是两个关键组件。Activity代表用户界面,而Service则用于在后台执行长时间运行的任务,不直接与用户交互。在实际项目中,常常需要多个Activity与一个Service进行通信,比如本...
在Android应用开发中,`Service`和`Activity`是两个重要的组件。`Service`用于在后台执行长时间运行的任务,而`Activity`则负责用户界面交互。在某些场景下,我们可能需要在`Service`和`Activity`之间传递数据,比如...
本示例"Android Service与Activity交互"旨在演示如何在Service启动后,通过线程进行异步操作,并在完成特定任务后,通过发送广播(Broadcast)通知Activity来更新用户界面。 首先,我们需要创建一个Service,通常在...
本主题将深入探讨如何使用Service以及BroadcastReceiver来实现特定的功能:当Service检测到某个函数的状态变化时,通过Broadcast发送通知,进而启动一个新的Activity。 首先,让我们了解`Service`。在Android中,...
在Android应用开发中,Activity、BroadcastReceiver和Service是三大核心组件,它们构成了应用程序与用户交互、后台处理以及系统间通信的基础。本综合Demo旨在详细解析这三者如何协同工作,特别是涉及广播的静态注册...
在Android应用开发中,Service和Activity是两个非常重要的组件。Service用于在后台执行长时间运行的任务,而Activity则负责用户界面交互。在某些场景下,我们可能需要Service与Activity之间进行数据传递,例如本例中...
界面传值则涉及到Activity、Fragment或者Service之间的数据交换。在这个"android 广播,界面传值示例"中,我们将深入探讨这两个主题。 首先,我们来看一下Android的广播机制。广播分为系统广播和自定义广播。系统...
- **BroadcastReceiver**:如果使用LocalBroadcastManager,Activity中会注册一个BroadcastReceiver来接收Service发送的广播。 在实际项目中,选择哪种通信方式取决于具体需求。例如,如果只是简单地启动和停止...
这种方法适合Service和多个Activity之间的通信,即使Activity不在运行状态也能接收到广播。 3. **观察者模式**:这是本文的重点。在这种模式下,Service作为被观察者(Observable),维护一个观察者列表,当数据...
在实际开发中,Service经常与BroadcastReceiver结合使用,以响应系统或自定义广播事件。Service可以在启动后持续运行,直到任务完成或者被系统停止。而BroadcastReceiver则作为Service的触发器,当特定事件发生时,...
当一个Service需要与多个Activity进行数据交换或控制交互时,Broadcast(广播)就起到了关键的作用。 **Broadcast(广播):** BroadcastReceiver是Android系统中的一个重要组件,它用于接收系统或应用发送的广播...
知识点:广播必须在activity或者service启动之后才能发挥作用。个人看来是因为开启activity或者service时, AndroidManifest.xml里面的注册的广播或者在Activity、service动态注册的广播接收器才能被开启,这样才能...
总结,通过Service发送广播通知Activity修改UI的内容,主要是利用Android的Broadcast机制,让Service和Activity之间实现非直接的通信。这种方式可以避免Service直接依赖于Activity,提高系统的灵活性。在实际开发中...
通过综合使用Activity、Service、BroadcastReceiver和单例模式,我们可以构建一个高效且健壮的Android应用架构,确保后台任务的稳定运行,同时优化资源使用,提高用户体验。在实际项目中,这种组合方式对于实现跨...
首先,让我们了解Android中的广播和Service基础知识: 1. **广播(Broadcast)**:广播是Android系统中一种全局的通知方式,任何组件都可以发送或接收广播。广播分为系统广播和自定义广播,系统广播是由系统触发,...
在Android应用开发中,Service和Activity是两个非常重要的组件。Service用于在后台执行长时间运行的任务,而Activity则负责用户界面交互。在某些场景下,Service和Activity之间需要进行数据共享,例如更新UI、传递...
"Service通过广播向多个Activity传值"是一种有效的跨组件通信方式,利用了Android系统的BroadcastReceiver机制。以下将详细阐述这个知识点。 首先,Service是Android中的一个组件,它在后台运行,不与用户交互。它...
本篇文章将详细介绍如何使用`AlarmManager`来启动广播`BroadcastReceiver`、服务`Service`以及页面`Activity`。 一、AlarmManager介绍 `AlarmManager`是Android系统提供的一个接口,可以设置一次性或周期性的定时...
Android Service与Activity之间通信的几种方式 服务(Service)和活动(Activity)是 Android 应用程序的两个基本组件,它们之间的通信是非常重要的。服务负责长期运行的任务,而活动负责前台页面的展示。在实际...