之前曾介绍过Android的UI设计与后台线程交互,据Android API的介绍,service一般是在后台运行的,没有界面的。那么如何实现service动态更新UI界面呢?
案例:通过service向远程服务器发送请求,根据服务器返回的结果动态更新主程序UI界面,主程序可实时关闭或重启服务。
注册BroadcastReceiver
在主程序activity中注册一个BroadcastReceiver,用于接收Service发布的广播。

1 @Override2 protected void onStart()3 {// 重写onStart方法4  dataReceiver = new DataReceiver();5  IntentFilter filter = new IntentFilter();// 创建IntentFilter对象6  filter.addAction("com.szy.ui.service");7  registerReceiver(dataReceiver, filter);// 注册Broadcast Receiver8  super.onStart();9 }

停止service命令
主程序activity可发布广播,用于向后台service传递数据或控制信息,如停止service命令。

 1 btnStop.setOnClickListener(new OnClickListener() 2 { 3  //为按钮添加点击事件监听     4     @Override 5     public void onClick(View v) 6     {//重写onClick方法  7         Intent myIntent = new Intent();//创建Intent对象  8         myIntent.setAction("com.szy.ui.service");  9         myIntent.putExtra("cmd", CMD_STOP_SERVICE); 10         sendBroadcast(myIntent);//发送广播 11     } 12 }); 

接收广播
后台service注册BroadCastReceiver用于接受主程序发送的广播

1 @Override2 public int onStartCommand(Intent intent, int flags, int startId)3 {// 重写onStartCommand方法4  IntentFilter filter = new IntentFilter();// 创建IntentFilter对象5  filter.addAction("com.szy.ui.service");6  registerReceiver(cmdReceiver, filter);// 注册Broadcast Receiver7  doJob();// 调用方法启动线程,自己来完成8  return super.onStartCommand(intent, flags, startId);9 }

实时发送
后台service在doJob()方法中连接服务器并向主程序实时发送广播。

1 /** 2  * 启动一个子纯种并连接服务器,接收服务器返回数据data。代码略。。。 3  */4 Object data;//服务器返回的数据data 5 Intent intent = new Intent();//创建Intent对象 6 intent.setAction("com.szy.ui.service"); 7 intent.putExtra("data", data); 8 sendBroadcast(intent);//发送广播 

至此,我们实现了主程序通过接收广播实时更新应用的UI界面。

更多相关文章

  1. Android中Intent的使用示例
  2. Android总结篇系列:Android广播机制----学习
  3. Android快速实现发送邮件
  4. Android中程序的停止状态详细介绍
  5. Android之Broadcast Receiver的两种注册方式
  6. android蓝牙BLE(三) —— 广播
  7. android(java)对网络状态(socket)判断的方法
  8. Android中Intent的使用示例
  9. Retrofit系列文章翻译7—在请求体里发送对象

随机推荐

  1. Android判断当前的android设备是否处于联
  2. 【Android开发环境安装】
  3. Android(安卓)Application - No window t
  4. 【066】Android(安卓)& Java 难点解析
  5. Android(安卓)Camera调用流程
  6. Android: Android(安卓)Wifi System
  7. android之实现各个组件点击事件处理
  8. Android(安卓)Studio下载地址[国内可下载
  9. Android(安卓)MediaController
  10. Android在设置里面添加新功能的方法