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

2023-12-10 08:45

本文主要是介绍【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. 不同的平台,对于网络服务功能处理方式不一样,所以需要单独处理;

这篇关于【Delphi】FMX开发 ios 和 android 异同点(踩坑记)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/476609

相关文章

Android中Dialog的使用详解

《Android中Dialog的使用详解》Dialog(对话框)是Android中常用的UI组件,用于临时显示重要信息或获取用户输入,本文给大家介绍Android中Dialog的使用,感兴趣的朋友一起... 目录android中Dialog的使用详解1. 基本Dialog类型1.1 AlertDialog(

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

Android Kotlin 高阶函数详解及其在协程中的应用小结

《AndroidKotlin高阶函数详解及其在协程中的应用小结》高阶函数是Kotlin中的一个重要特性,它能够将函数作为一等公民(First-ClassCitizen),使得代码更加简洁、灵活和可... 目录1. 引言2. 什么是高阶函数?3. 高阶函数的基础用法3.1 传递函数作为参数3.2 Lambda

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

Android自定义Scrollbar的两种实现方式

《Android自定义Scrollbar的两种实现方式》本文介绍两种实现自定义滚动条的方法,分别通过ItemDecoration方案和独立View方案实现滚动条定制化,文章通过代码示例讲解的非常详细,... 目录方案一:ItemDecoration实现(推荐用于RecyclerView)实现原理完整代码实现

Android App安装列表获取方法(实践方案)

《AndroidApp安装列表获取方法(实践方案)》文章介绍了Android11及以上版本获取应用列表的方案调整,包括权限配置、白名单配置和action配置三种方式,并提供了相应的Java和Kotl... 目录前言实现方案         方案概述一、 androidManifest 三种配置方式

基于Python开发批量提取Excel图片的小工具

《基于Python开发批量提取Excel图片的小工具》这篇文章主要为大家详细介绍了如何使用Python中的openpyxl库开发一个小工具,可以实现批量提取Excel图片,有需要的小伙伴可以参考一下... 目前有一个需求,就是批量读取当前目录下所有文件夹里的Excel文件,去获取出Excel文件中的图片,并

基于Python开发PDF转PNG的可视化工具

《基于Python开发PDF转PNG的可视化工具》在数字文档处理领域,PDF到图像格式的转换是常见需求,本文介绍如何利用Python的PyMuPDF库和Tkinter框架开发一个带图形界面的PDF转P... 目录一、引言二、功能特性三、技术架构1. 技术栈组成2. 系统架构javascript设计3.效果图