【Delphi】FMX开发 ios 和 android 异同点(踩坑记)

目录

一、前言

二、补充下基础知识

1. APP程序事件:TApplicationEvent

2. APP内置Web服务器或者UDP服务端或者TCP服务端

三、iOS 和 android 平台的不同点

1. TApplicationEvent的不同点:以下不同点,请仔细阅读!

2. APP内置服务器不同点

四、总结


一、前言

        Delphi中FMX开发 ios 和 android 程序很方便,一套代码可以兼容不同平台。但凡事也不是绝对的,不同的平台有各自的特点,开发起来还是有很多不同的地方需要去分别适配。最近在学习FMX开发时,遇到了一些这样的问题,也算是踩坑吧,今天把这些记录下来,以便后来者有个参考。

        事实上,如果详细阅读官方的文档,也会少走很多弯路,无奈我们总是惯性,按照VCL来理解,或者自认为自己理解了,实际上是没有理解,所以就会走些弯路。真正 ios 和 android 平台是有很多不同点的,本文也只是把我遇到的问题记录下来,如果你也有遇到的不同问题,请留言!

二、补充下基础知识

        在介绍具体遇到的不同点前,先补充明确下一些基础的知识。

1. APP程序事件:TApplicationEvent

        FMX程序和VCL程序相似,都有程序事件,移动端也不例外,这些事件包括(官方帮助):

ItemDescriptionPlatform
AndroidiOS

1. BecameActive

Your application has gained the focus.

Supported

Supported

2. EnteredBackground

The user is no longer using your application, but your application is still running in the background.

Supported

Supported

3. FinishedLaunching

Your application has been launched.

Supported

Supported

4. LowMemory

This warns your application that the device is running out of memory.

Your application should reduce memory usage, freeing structures and data that can be loaded again at a later point.

Supported

Supported

5. WillBecomeForeground

The user is now using your application, which was previously in the background.

Supported

Supported

6.WillBecomeInactive

Your application is going to loose the focus.

Supported

Supported

7.WillTerminate

The user is quitting your application.

Supported

Supported

以上程序事件,后面有解释,一看就明白。

2. APP内置Web服务器或者UDP服务端或者TCP服务端

        我们开发APP,可能需要在程序内部构建Web服务器,或则和TCP服务端,以便监听接收通过电脑或者其他设备发送的请求。

        比如我们可能会在程序中使用 TIdHTTPServer 创建一个Web服务器,提供本机Web浏览内容。当然我们也可能建立一个UDP监听服务器,以便能够接收到其他设备的UDP广播信息。

三、iOS 和 android 平台的不同点

1. TApplicationEvent的不同点:以下不同点,请仔细阅读!

在android系统中,程序调用系统的分享功能,将会触发程序的 WillBecomeInactive事件。  

在 ios 系统中,程序调用系统的分享功能,将不会触发程序的 WillBecomeInactive事件。

在android系统中,程序提示用户申请权限,将不会触发程序的 WillBecomeInactive事件。

在ios系统中,程序提示用户申请权限,将会触发程序的 WillBecomeInactive事件

2. APP内置服务器不同点

假定一款APP,内置有Web服务器功能,程序启动后是能正常访问,正常提供服务的,那么对于如下事件,Web服务器的表现将会在 ios 和 android 上有不同。

平台说明
android

1. 程序进入InActive状态后,Web服务正常;

2. 程序进入Background后,大概5秒钟后,Web服务停止

3. 程序重新Active后(注意不是重启,是从后台调入到前台),Web服务正常

以上符合我们设计程序的初衷,应该这样就可以的。

ios

1. 程序进入InActive状态后,Web服务停止;

2. 程序进入Background后,Web服务立即停止

3. 程序重新Active后(注意不是重启,是从后台调入到前台),Web服务仍然停止

以上似乎不符合我们设计程序的初衷,这样就要求我们在程序的Active以及BackGround等事件中要进行处理,否则进入后台再起来后Web服务就不能用了。

四、总结

1. 因为ios和android对于调出系统功能界面导致触发InActive事件不同,所以一定要分别处理;

2. 不同的平台,对于网络服务功能处理方式不一样,所以需要单独处理;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/240281.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

yarn或者pnpm第一次执行的时候遇到报错yarn : 无法加载文件......因为在此系统上禁止运行脚本

报错: yarn : 无法加载文件 C:\Users\rina2\AppData\Roaming\npm\yarn.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/http://go.microsoft.com/fwlink/?LinkID135170 中的 about_Execution_Policies。 解决方案&#xff1a…

华清远见嵌入式学习——QT——作业4

作业要求&#xff1a; 代码运行效果图&#xff1a; 代码&#xff1a; 头文件&#xff1a; #ifndef ALARMCLOCK_H #define ALARMCLOCK_H#include <QWidget> #include <QTimerEvent> #include <QTimer> #include <QTime> #include <QTextToSpeech&g…

华为OD试题二(文件目录大小、相对开音节、找最小数)

1. 文件目录大小 题目描述&#xff1a; 一个文件目录的数据格式为&#xff1a;目录id&#xff0c;本目录中文件大小&#xff0c;(子目录id 列表)。其中目录id全局唯一&#xff0c;取值范围[1,200]&#xff0c;本目录中文件大小范 围[1,1000]&#xff0c;子目录id列表个数[0,10…

Java的NIO工作机制

文章目录 1. 问题引入2. NIO的工作方式3. Buffer的工作方式4. NIO数据访问方式 1. 问题引入 在网络通信中&#xff0c;当连接已经建立成功&#xff0c;服务端和客户端都会拥有一个Socket实例&#xff0c;每个Socket实例都有一个InputStream和OutputStream&#xff0c;并通过这…

云基础软件深化合作,云轴科技ZStack与麒麟软件战略签约

12月8日&#xff0c;云轴科技ZStack与麒麟软件战略合作签约仪式在北京举行&#xff0c;双方对过往紧密合作表达了充分肯定&#xff0c;并就进一步联合技术创新、打造重点行业标杆和持续赋能客户达成高度共识。云轴科技创始人&CEO张鑫和麒麟软件高级副总经理谢文征共同见证双…

高通平台开发系列讲解(USB篇)Composite USB gadget framework

文章目录 一、Gadget framework二、Composite driver and gadget driver interaction沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇章主要图解高通平台PCIe EP软件架构 一、Gadget framework Composite USB gadget framework 架构如下所示: The composite fram…

<软考>软件设计师-4知识产权与标准化(总结)

(一)知识产权概述 1 知识产权 是指公民、法人、非法人单位对自己的创造性智力成果和其他科技成果依法享有的民事权。是智力成果的创造人依法享有的权利和在生产经营活动中标记所有人依法所享有的权利的总称。包含著作权、专利权、商标权、商业秘密权、植物新品种权、集成电路布…

Network 灰鸽宝典【目录】

目前已有文章 21 篇 Network 灰鸽宝典专栏主要关注服务器的配置&#xff0c;前后端开发环境的配置&#xff0c;编辑器的配置&#xff0c;网络服务的配置&#xff0c;网络命令的应用与配置&#xff0c;windows常见问题的解决等。 文章目录 服务配置环境部署GitNPM 浏览器编辑器系…

玻色量子袁为出席中国移动第四届科技周量子计算算法与应用分论坛

9月12日&#xff0c;中国移动第四届科技周“量子计算算法与应用”分论坛在北京成功举办&#xff0c;中国移动研究院院长黄宇红发表致辞&#xff0c;中国移动未来研究院院长崔春风全程主持。玻色量子作为光量子计算领域真机测试与场景应用的标杆企业应邀出席&#xff0c;玻色量子…

Kubernetes(k8s)集群部署----->超详细

Kubernetes&#xff08;k8s&#xff09;集群部署-----&#xff1e;超详细 一、资源准备二、安装准备2.1 主机环境设置2.1.1 关闭操作系统防火墙、selinux2.1.2 关闭swap交换分区2.1.3 允许iptables检测桥接流量&#xff08;可选&#xff09; 2.2 安装Docker环境2.3 安装Kubeadm…

自动化补丁管理软件

什么是自动化补丁管理 自动补丁管理&#xff08;或自动补丁&#xff09;是指整个补丁管理过程的自动化&#xff0c;从扫描网络中的所有系统到检测缺失的补丁&#xff0c;在一组测试系统上测试补丁&#xff0c;将它们部署到所需的系统&#xff0c;并提供定期更新和补丁部署状态…

不再兼容“安卓“,鸿蒙开发与android对比

首先&#xff0c;鸿蒙系统采用了分布式技术&#xff0c;其设计理念是“能用分布式解决的问题就不用单机解决”。这意味着鸿蒙旨在构建一个统一的分布式操作系统&#xff0c;可以支持不同设备之间的交互和通信。 而安卓系统基于Linux内核和Java编程语言构建&#xff0c;属于单机…

代理ip一般适用于什么行业,什么场景

代理IP适用于多个行业和场景&#xff0c;以下是其中一些主要的应用领域&#xff1a; 互联网营销&#xff1a; 数据抓取&#xff1a;用于收集竞争对手的价格、产品信息等。社交媒体管理&#xff1a;在不同账户之间切换&#xff0c;提高账号安全性或进行市场调研。广告投放优化&a…

探索SSL证书的应用场景,远不止网站,还有小程序、App Store等

说到SSL证书&#xff0c;我们都知道其是用于实现HTTPS加密保障数据安全的重要工具&#xff0c;在建设网站的时候经常会部署SSL证书。但实际上&#xff0c;SSL证书的应用场景远不止网站&#xff0c;它还被广泛地应用到小程序、App Store、抖音广告、邮件服务器以及各种物联网设备…

西南交通大学【数电实验6---可控分频器设计】

一、实验电路图、状态图、程序代码、仿真代码、仿真波形图&#xff08;可以只写出核心功能代码&#xff0c;代码要有注释&#xff09; 不管sel为0或者1&#xff0c;clk_out[0]的频率都是不变的&#xff0c;故在always块当中&#xff0c;可优先对clk_out[0]进行处理&#xff0c;…

文件操作及函数

什么是文件&#xff1f; 在程序设计中&#xff0c;文件有两种&#xff1a;程序文件和数据文件。 程序文件 包括源程序文件&#xff08;.c&#xff09;&#xff0c;目标文件&#xff08;.obj&#xff09;&#xff0c;可执行程序(.exe)。 数据文件 文件的内容不一定是程序&…

超过 1450 个 pfSense 服务器因错误链而遭受 RCE 攻击

在线暴露的大约 1450 个 pfSense 实例容易受到命令注入和跨站点脚本漏洞的攻击&#xff0c;这些漏洞如果链接起来&#xff0c;可能使攻击者能够在设备上执行远程代码。 pfSense 是一款流行的开源防火墙和路由器软件&#xff0c;允许广泛的定制和部署灵活性。 它是一种经济高效…

MYSQL练题笔记-子查询-电影评分

一、题目相关内容 1&#xff09;相关的表 2&#xff09;题目 3&#xff09;帮助理解题目的示例&#xff0c;提供返回结果的格式 二、自己初步的理解 1.字典序是指从前到后比较两个字符串大小的方法。 首先比较第1个字符&#xff0c;如果不同则第1个字符较小的字符串更小&…

在idea中使用maven创建dynamic web project

0、先正确安装MAVEN, TOMCAT &#xff0c;并集成到idea 1、new 一个 project&#xff0c; 使用maven的archetype-webapp创建 2、等待创建&#xff0c;会提示build success 3、给project 添加tomcat配置&#xff0c;并部署project到 tomcat 4、运行 5、OK 6、再次引入时&…

CentOS 7 源码部署 Nginx

文章目录 1. 概述2. 部署示例2.1 下载和解压 Nginx 源码2.2 安装编译依赖包2.3 编译和安装2.4 启动 Nginx2.5 配置防火墙2.6 设置 Nginx 为系统服务2.7 配置访问 3. 扩展知识 1. 概述 Nginx 是一款高性能的开源 Web 服务器软件&#xff0c;广泛应用于互联网领域。本篇博客将介…