安卓请求服务器[根据服务器的内容来更新spinner]
根据服务器的内容来更新spinner
本文内容请结合如下两篇文章一起看:
腾讯云函数node.js返回自动带反斜杠
腾讯云函数部署环境[使用函数URL]
现在有这样一个需求,APP有一个下拉选择框作为版本选择,因为改个管脚就变成一个版本,客户需求也很零散,所以后期会大量增加版本,这时候每增加一个版本就让客户更新一次APP比较麻烦,因为客户有很多,不好处理,所以思来想去还是这个下拉选择框能够从服务器获取然后更新比较好,现在就来做这个事情!

首先要把发送网络请求拿到服务器数据的功能搞出来,不加这个功能之前的下拉列表是这样的(上图是最终加了的效果):
String[] ctype = new String[]{"001","001-1", "002","002-1","002-2","003","004","004-1","001-2",};spinner_versiontype_adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, ctype); //创建一个数组适配器spinner_versiontype_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); //设置下拉列表框的下拉选项样式
onCreate函数中增加如下内容:
Thread thread = new Thread("Thread1") {public void run() {HttpURLConnection connection=null;try {URL url = new URL("https://1xxxxxxxx.scf.tencentcs.com/RequestJson?id=BleCloudControlMode");connection = (HttpURLConnection) url.openConnection();connection.setConnectTimeout(3000);connection.setReadTimeout(3000);//设置请求方式 GET / POST 一定要大小connection.setRequestMethod("GET");connection.setDoInput(true);connection.setDoOutput(false);connection.connect();int responseCode = connection.getResponseCode();if (responseCode != HttpURLConnection.HTTP_OK) {throw new IOException("HTTP error code" + responseCode);}String result = getStringByStream(connection.getInputStream());if (result == null) {Log.d("Fail", "失败了");}else{result = result.substring(1,result.length()-1).replace("\\","");Gson gson = new Gson();Employee empObject = gson.fromJson(result, Employee.class);//System.out.println(empObject);Message message = new Message();message.what = 1;message.obj = empObject.getMode();mHandler.sendMessage(message);}} catch (Exception e) {e.printStackTrace();}};};thread.start();
这里从服务器拿到数据后发送一个消息给主线程,主线程收到后这样操作UI显示:
//全局变量ArrayAdapter<String> spinner_versiontype_adapter;Handler mHandler;mHandler = new Handler(){@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);switch (msg.what){case 1:String str=(String)(msg.obj);String[] mode = str.split(";");spinner_versiontype_adapter = new ArrayAdapter<String>(OTA_Active.this, android.R.layout.simple_spinner_item, mode);spinner_versiontype.setAdapter(spinner_versiontype_adapter);spinner_versiontype_adapter.notifyDataSetChanged();}}};
根据腾讯云函数node.js返回自动带反斜杠文章的代码说明可以得到代码运行后下拉选择框会变成本章节第一幅图的样子!
这样修改后,如果还要增加版本号只用修改云函数然后重新部署就行了,客户不用升级APP,极大方便使用,而且这种方式比在COS上保存一个xml文件来得更加容易,也是为了后面的功能做铺垫!
相关文章:
安卓请求服务器[根据服务器的内容来更新spinner]
根据服务器的内容来更新spinner 本文内容请结合如下两篇文章一起看: 腾讯云函数node.js返回自动带反斜杠 腾讯云函数部署环境[使用函数URL] 现在有这样一个需求,APP有一个下拉选择框作为版本选择,因为改个管脚就变成一个版本,客户需求也很零散,所以后期会大量增加版本,这时候每…...
c++ 联合(Union)的特性和使用
联合(Union)是一种特殊的数据结构,允许在同一内存位置存储不同的数据类型。一个 union 可以有多个数据成员,但是在任意时刻只有一个数据成员可以有值。当某个成员被赋值后其他成员变为未定义状态。以下是联合的主要特点和使用方式…...
大白菜U盘启动工具
大白菜如何u盘启动进winpe装系统大白菜是一款非常实用的U盘启动盘制作工具,可以帮助用户快速地将U盘制作成启动盘,从而方便地进行系统安装、维护和修复等操作。官方网站: 大白菜u盘启动盘制作工具_大白菜u盘装系统_大白菜pe_大白菜官网-首页…...
C# 中 IEnumerable 和 IQueryable 接口之间的区别
在 C# 中,IEnumerable和IQueryable接口都用于查询数据集合,但它们的用途不同,功能也不同。下面是它们之间差异的细分: 1. C# 中的 IEnumerable 接口 在命名空间中定义System.Collections。表示集合中元素的只进式游标。适用于查…...
centos安装yum命令及常用yum命令
一、准备工作 获取安装介质: 如果你有CentOS的安装ISO文件或DVD介质,可以直接使用它来设置本地yum源。 如果没有,你需要在一个有网络连接的CentOS系统上下载所需的rpm包和依赖。 创建挂载点(如果你使用的是ISO文件)&a…...
table = collections.defaultdict(list)申请的字典的类型是什么?
当你使用 collections.defaultdict(list) 来申请一个字典时,这个字典的类型是 defaultdict,但是其行为和表现方式在某些方面与普通的字典(dict)相似,主要区别在于它如何处理缺失的键。 defaultdict 是 Python 标准库 …...
【虚拟机】虚拟机网络无法访问问题【已解决】
【虚拟机】虚拟机无法上网问题【已解决】 问题探究解决方法法1:查看相关“网络服务”是否处于正常启动状态法2:重启网络法3:重新安装VMWare法4:使用NAT模式,每次打开win7都没连上网的解决办法 问题探究 安装了很多个虚…...
大数据面试题之Spark(3)
目录 Spark的哪些算子会有shuffle过程? Spark有了RDD,为什么还要有Dataform和DataSet? Spark的RDD、DataFrame、DataSet、DataStream区别? Spark的Job、Stage、Task分别介绍下,如何划分? Application、job、Stage、task之间的关系 Stage内部逻辑…...
基于 Gunicorn + Flask + Docker 的模型高并发部署
在现代 Web 应用程序中,处理高并发请求是一个常见且重要的需求。本文将介绍如何使用 Gunicorn、Flask 和 Docker 来实现模型的高并发部署。我们将从环境设置、代码实现、Docker 镜像构建及部署等方面进行详细讲解。 一、环境设置 1. 安装 Flask 首先,…...
CPU通过网络将IP camera的RTSP流(H.264编码或是H.265编码)拉回, 交给GPU解码并显示的处理流程
这个流程涉及到从IP摄像头获取视频流(通过RTSP协议),然后将流传输给GPU进行解码和显示的过程。详细的流程描述如下: 1. 获取视频流: - **IP摄像头**: 摄像头通过RTSP(Real-Time Streaming Protocol)将…...
windows@资源管理器中的地址栏@访问共享文件夹的各种方法@管理共享文件夹
文章目录 资源管理器中的地址栏可以访问什么访问共享文件夹👺UNC路径资源管理器打开共享文件夹纯命令行方式访问共享文件夹 共享文件夹相关操作查看所有已经共享的文件夹👺停止某个文件的共享 共享文件夹的访问控制补充匿名访问问题😊强制启用…...
ffmpeg推流时Unknown encoder ‘libx264‘
如果环境中有conda,最简单的办法就是 conda uninstall ffmpeg conda install ffmpeg 或者 sudo apt-get install -y libgmp3-dev pkg-config gnutls-bin libaom-dev libass-dev libbluray-dev libfdk-aac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-…...
xmind导入导出支持图片功能源码改造
xmind导入导出支持图片功能 在开发用例管理平台的过程中,需要使用xmind来管理用例。所以也涉及到xmind用例的导入导出功能, 在开始的时候,xmind文件中没有图片,所以使用xmind,xmindparser包就可以完成改任务。现在新增需求&#x…...
Web应用防火墙用在哪些场景?
WAF是Web Application Firewall的缩写,翻译为“Web应用防火墙”是一种网络安全设备或服务,用于保护Web应用程序免受各种网络攻击和漏洞的影响。 WAF特别设计用于识别和阻止特定于Web应用程序的攻击,例如SQL注入、跨站脚本(XSS)、跨站请求伪造…...
MySQL高可用(MHA高可用)
什么是 MHA MHA(MasterHigh Availability)是一套优秀的MySQL高可用环境下故障切换和主从复制的软件。 MHA 的出现就是解决MySQL 单点的问题。 MySQL故障切换过程中,MHA能做到0-30秒内自动完成故障切换操作。 MHA能在故障切换的过程中最大…...
k8s_如何配置 containerd 使用镜像加速拉取docker.io上的镜像
在 Kubernetes 使用 containerd 作为容器运行时,可以通过配置 containerd 来使用镜像网站(镜像仓库)拉取镜像。这可以通过修改 containerd 的配置文件来实现。以下是详细步骤: 步骤 1:安装 containerd (如果已安装,这一步略过) 如果尚未安装 containerd,可以使用以下命…...
centos7安装宝塔面板
一、进入root模式 sudo su二、安装宝塔面板 if [ -f /usr/bin/curl ];then curl -sSO https://download.bt.cn/install/install_panel.sh;else wget -O install_panel.sh https://download.bt.cn/install/install_panel.sh;fi;bash install_panel.sh ed8484bec...
Spring 事务管理:全面解析
Spring 框架是一款广受欢迎的 Java 开发框架,其强大的功能之一便是事务管理。事务管理在确保数据一致性和完整性方面至关重要。在这篇文章中,我们将深入探讨 Spring 事务管理,包括声明式事务管理、编程式事务管理,以及事务传播和隔…...
概率论与数理统计_上_科学出版社
contents 前言第1章 事件与概率1.1 随机事件与样本空间1.1.1 样本空间1.1.2 随机事件1.1.3 事件之间的关系与运算 1.2 概率的三种定义及其性质1.2.1 概率的统计定义1.2.2 概率的古典定义1.2.3 概率的几何定义1.2.4 概率的性质 1.3 常用概型公式1.3.1 条件概率计算公式1.3.2 乘法…...
昇思25天学习打卡营第11天|LSTM+CRF序列标注
序列标注指给定输入序列,给序列中每个Token进行标注标签的过程。序列标注问题通常用于从文本中进行信息抽取,包括分词(Word Segmentation)、词性标注(Position Tagging)、命名实体识别(Named Entity Recognition, NER)等。 和人理解语言一样,…...
【JVM】- 内存结构
引言 JVM:Java Virtual Machine 定义:Java虚拟机,Java二进制字节码的运行环境好处: 一次编写,到处运行自动内存管理,垃圾回收的功能数组下标越界检查(会抛异常,不会覆盖到其他代码…...
HTML 列表、表格、表单
1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...
Python爬虫(一):爬虫伪装
一、网站防爬机制概述 在当今互联网环境中,具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类: 身份验证机制:直接将未经授权的爬虫阻挡在外反爬技术体系:通过各种技术手段增加爬虫获取数据的难度…...
聊一聊接口测试的意义有哪些?
目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开,首…...
人机融合智能 | “人智交互”跨学科新领域
本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...
土建施工员考试:建筑施工技术重点知识有哪些?
《管理实务》是土建施工员考试中侧重实操应用与管理能力的科目,核心考查施工组织、质量安全、进度成本等现场管理要点。以下是结合考试大纲与高频考点整理的重点内容,附学习方向和应试技巧: 一、施工组织与进度管理 核心目标: 规…...
负载均衡器》》LVS、Nginx、HAproxy 区别
虚拟主机 先4,后7...
goreplay
1.github地址 https://github.com/buger/goreplay 2.简单介绍 GoReplay 是一个开源的网络监控工具,可以记录用户的实时流量并将其用于镜像、负载测试、监控和详细分析。 3.出现背景 随着应用程序的增长,测试它所需的工作量也会呈指数级增长。GoRepl…...
python可视化:俄乌战争时间线关键节点与深层原因
俄乌战争时间线可视化分析:关键节点与深层原因 俄乌战争是21世纪欧洲最具影响力的地缘政治冲突之一,自2022年2月爆发以来已持续超过3年。 本文将通过Python可视化工具,系统分析这场战争的时间线、关键节点及其背后的深层原因,全面…...
虚拟机网络不通的问题(这里以win10的问题为主,模式NAT)
当我们网关配置好了,DNS也配置好了,最后在虚拟机里还是无法访问百度的网址。 第一种情况: 我们先考虑一下,网关的IP是否和虚拟机编辑器里的IP一样不,如果不一样需要更改一下,因为我们访问百度需要从物理机…...
