之前我们曾向您介绍过Android的UI设计与后台线程交互,据Android API的介绍,service一般是在后台运行的,没有界面的。那么如何实现service动态更新UI界面呢?
案例:通过service向远程服务器发送请求,根据服务器返回的结果动态更新主程序UI界面,主程序可实时关闭或重启服务。
注册BroadcastReceiver
在主程序activity中注册一个BroadcastReceiver,用于接收Service发布的广播。
Java代码:
@Override
protected void onStart() {
//重写onStart方法
dataReceiver = new DataReceiver();
IntentFilter filter = new IntentFilter();
//创建IntentFilter对象
filter.addAction("com.justel.serviceBC");
registerReceiver(dataReceiver, filter);
//注册Broadcast Receiver super.onStart();
}
停止service命令
主程序activity可发布广播,用于向后台service传递数据或控制信息,如停止service命令。
Java代码:
btnStop.setOnClickListener(new OnClickListener() {
//为按钮添加点击事件监听
@Override
public void onClick(View v) {
//重写onClick方法
Intent myIntent = new Intent();
//创建Intent对象
myIntent.setAction("com.justel.service");
myIntent.putExtra("cmd", CMD_STOP_SERVICE);
sendBroadcast(myIntent);
//发送广播
}
});
接收广播
后台service注册BroadCastReceiver用于接受主程序发送的广播
Java代码:
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
//重写onStartCommand方法
IntentFilter filter = new IntentFilter();
//创建IntentFilter对象
filter.addAction("com.justel.service");
registerReceiver(cmdReceiver, filter);
//注册Broadcast Receiver doJob();
//调用方法启动线程,自己来完成
return super.onStartCommand(intent, flags, startId);
}
实时发送
后台service在doJob()方法中连接服务器并向主程序实时发送广播。
Java代码:
/**
* 启动一个子纯种并连接服务器,接收服务器返回数据data。代码略。。。
*/
Object data;
//服务器返回的数据data
Intent intent = new Intent();
//创建Intent对象
intent.setAction("com.justel.service");
intent.putExtra("data", data);
sendBroadcast(intent);
//发送广播
至此,我们实现了主程序通过接收广播实时更新应用的UI界面。
分享到:
相关推荐
service中开线程并结合广播实现动态更新activity主界面。有需要的可以下载下来看看,谢谢支持!!
安卓开发观察者模式应用-一个service通知多个activity更新ui的实现, service与activity的交互: 1.接口回调 2.自定义广播 3.观察者模式
material-ui-webpack-example, web service用户界面的web pack示例 材料用户界面示例 web pack项目这是一个使用材料ui插件的示例项目。安装克隆存储库之后,安装依赖项:cd <project folder>/material-ui/examples/...
ALLURE-DOCKER-SERVICE用户界面目录获取信息添加自定义URL前缀支持吉特DOCKER生成(开发人员使用) 特征Allure Docker Service UI为frankescobar / allure-docker-service API容器提供了友好的用户界面。 Docker集线...
根据MSDN上 Windows NT 服务程序样例优化后,轻松实现带MFC对话框的系统服务程序框架。
Wireguard-ui Web用户界面,用于管理WireGuard设置。特征友好的用户界面验证管理额外的客户信息(姓名,电子邮件等) 使用QR码/文件检索配置运行WireGuard-UI 默认的用户名和密码为admin 。使用docker compose 您...
在WIN7系统在Oracle VM VirtualBox启动DOCKER虚拟机出现以下错误的解决...界面: IConsole {8ab7c520-2442-4b66-8d74-4ff1e195d2b6} 解决办法就是 下载此资源将里面的三个文件在C:\Windows\System32下替换原文件即可。
Service通常总是称之为“后台服务”,其中“后台”一词是相对于前台而言的,具体是指其本身的运行并不依赖于用户可视的UI界面,因此,从实际业务需求上来理解,Service的适用场景应该具备以下条件: 1.并不依赖于...
使用Service+UI界面绑定实现了类似网易云音乐的播放控制面板,效果看起来还不赖,需要的可以下载看看,具体实现我也有写响应的博客。博客地址:还在审核中,请等待。。如有问题,请各位大神指出。
服务图用户界面要求使用以下内容: 节点LTS(v14) npm(v6.4.1) 为了发展: Eslint从airbnb配置扩展而来。可用脚本在项目目录中,可以运行:npm run dev 启动开发服务器并在开发模式下运行该应用程序。npm run ...
soapui中文版拥有直观易懂的图形界面,主要为Webservice开发提供了专业强大的测试功能,包括Web Service的功能、负载、符合性测试等,除了独立使用,它也可利用插件集成到Eclipse、maven2.X、Netbeans和intellij中...
c# windows服务 启动外部程序,程序已开启,但看不到界面
用户界面设计器表单 Material UI Material UI Designer 是一种工具,设计人员和开发人员可以使用它来使用 Material UI 组件快速组合用户界面。 设计可以随时预览,一旦完成,设计页面的代码可以作为准备运行的React...
实现service后台下载资源,通过广播方式通知前台ui界面,下载完成后会解压zip文件到指定目录。该demo中下载文件为zip格式。
streaming_service_app_ui 一个新的Flutter项目。入门该项目是Flutter应用程序的起点。 如果这是您的第一个Flutter项目,那么有一些资源可以帮助您入门:要获得Flutter入门方面的帮助,请查看我们的,其中提供了教程...
微信界面通过Fragment实现;用户登录通过sqlite实现;音乐播放通过service实现并会发送通知;简单的ListView微信消息等实现
新的Service UI使用与DC / OS UI相同的组件和样式,以提供无缝的用户体验。 由于我们专注于集成使用Marathon和DC / OS的经验,因此我们不打算进一步更新旧的UI。 但是,在接下来的几个月中,我们将继续
基本上,您的应用程序用户界面中可见的任何人类可读文本。 此服务有助于集中处理应用程序中的副本,从而使其更易于管理。 模板中不再有硬编码的字符串,也不需要多余的正则表达式替换! 安装 npm install --save @...
我创建了一个简单的UI界面,用于管理AWS Simple Email Service模板。 享受 :) 特征 与基本CRUD API交互 安装 克隆或下载项目 在项目目录中打开终端 安装node_modules和bower_components npm install bower ...
综合运用UI界面设计、数据存储、Activity(活动)、Service(服务)、MusicPlayer、ListView等知识,设计开发一款具有音乐列表的音乐播放器。 整个工程包含五个类和五个布局文件,其中frag1、frag2为java文件,Music_...