最近做Android IM系统常常需要利用后台程序刷新前台界面,我们知道后台程序Service是没有界面的,Service是无法调用前台的空间的,那么我们该如何刷新前台的界面的?我参考了以下的两篇,《android之旅——广播(broadcast)》、《Android的UI设计与后台线程交互 》两篇博文,并且写了相关的Demo。以下是我的以下总结。

Broadcast的作用:

(1)实现了不同的程序之间的数据传输与共享,因为只要是和发送广播的action相同的接受者都能接受这个广播。

(2)起到了一个通知的作用,比如在service中要通知主程序,更新主程序的UI等。

(3)Broadcast用Intent 传递数据。

Broadcast的实现:

在此之前,先说一下广播是如何过滤的?Acitvity 是如何接受广播的?

我们知道广播有两种注册方式,第一种,静态的注册,要在Androidmainfes.xml种配置相关的属性;第二种直接在Activity 中动态绑定广播。当有广播发送时,广播其实上传送Intent数据,系统根据<intent-filter>标签的相关内容或者动态的IntentFilter过滤,当Intent数据符合Activity时才执行OnReceive相关操作。

关于Broadcast的具体实现大家可以看

《android之旅——广播(broadcast)(http://www.cnblogs.com/qianlifeng/archive/2011/03/06/1972305.html),这篇博文的作者写的非常的清楚,我就不献丑赘述了。

下面我来简单谈谈后台界面如何刷新前台界面的,其实就是Service与Broadcast的简单结合。

Broadcast如果是静态注册,那么Broadcast文件只能是独立的显然不是我们想要的,说要用Service更新前台Activity界面,我们一般用动态注册广播,在Activity内部注册一个广播再写一个内部类继承BroadcastReceive出来Intent传来的广播事件。这里说一下动态注册广播是要注意要在Activity生命周期结束的时候解除广播的注册。具体可以查看http://mobile.51cto.com/android-230195.htm。

注册BroadcastReceiver

在主程序activity中注册一个BroadcastReceiver,用于接收Service发布的广播。

  1. @Override
  2. protectedvoidonStart(){//重写onStart方法
  3. dataReceiver=newDataReceiver();
  4. IntentFilterfilter=newIntentFilter();//创建IntentFilter对象
  5. filter.addAction("com.justel.serviceBC");
  6. registerReceiver(dataReceiver,filter);//注册BroadcastReceiver
  7. super.onStart();
  8. }

撤销BroadcastReceiver

unregisterReceiver(dataReceiver);//取消注册Broadcast Receiver

推荐一篇博文:

Android 中的BroadCastReceiver 》http://yangguangfu.iteye.com/blog/1063732

本文参考资料:

(1)http://www.cnblogs.com/qianlifeng/archive/2011/03/06/1972305.html

(2)http://blog.csdn.net/yonghumingshishenme/archive/2011/03/23/6271950.aspx

(3)http://mobile.51cto.com/android-230195.htm

更多相关文章

  1. Android(安卓)UI规范,就这么不受待见吗?
  2. Android开场屏 (Splash Screen)
  3. Android输入法遮盖输入框(屏幕底部输入框不能往上弹)
  4. Android(安卓)Eclipse下工程移植到Android(安卓)Studio详细步骤
  5. Android引导界面设计之ParallaxViewPager视差效果
  6. Hierarchy Viewer Tool
  7. Android(安卓)进程保活方案
  8. android 自定义锁屏
  9. Android(安卓)SharedPreferences 首次运行引导界面

随机推荐

  1. Windows搭建Eclipse+JDK+SDK的Android(安
  2. android cursor和cursoradapter的监听机
  3. Android(安卓)中使用onSaveInstanceState
  4. libevent 在 Android(安卓)上的一个改进
  5. Android(安卓)HAL架构
  6. Android深入浅出系列课程---Lesson16-AFF
  7. Android与OpenCV2.4.4(2013最新)搭建图像
  8. android SDK的常用命令工具和资源
  9. android AsynTask 实现原理
  10. 【flutter】Running Gradle task 'assemb