博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在Android中实现service动态更新UI界面
阅读量:6271 次
发布时间:2019-06-22

本文共 1713 字,大约阅读时间需要 5 分钟。

之前曾介绍过,据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界面。

本文转自欢醉博客园博客,原文链接http://www.cnblogs.com/zhangs1986/p/3248258.html如需转载请自行联系原作者

欢醉

你可能感兴趣的文章
SqlServer--bat批处理执行sql语句1-osql
查看>>
Linux系列教程(十八)——Linux文件系统管理之文件系统常用命令
查看>>
laravel安装初体验
查看>>
用yum查询想安装的软件
查看>>
TIJ -- 吐司BlockingQueue
查看>>
数据库分页查询
查看>>
[编程] C语言枚举类型(Enum)
查看>>
[Javascript] Compose multiple functions for new behavior in JavaScript
查看>>
ASP.NET MVC性能优化(实际项目中)
查看>>
ES6里关于类的拓展(一)
查看>>
零元学Expression Blend 4 - Chapter 46 三分钟快速充电-设定Margin的小撇步
查看>>
Format Conditions按条件显示表格记录
查看>>
RichTextBox指定全部文字显示不同颜色及部分文字高亮颜色显示
查看>>
mysql优化----explain的列分析
查看>>
Python正则表达式
查看>>
Java中CAS详解
查看>>
Spring Boot Unregistering JMX-exposed beans on shutdown
查看>>
命令行man的帮助手册
查看>>
Ubuntu 16.04下为Android编译OpenCV 3.2.0 Manager
查看>>
poi 导入导出的api说明(大全)
查看>>