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

文章探讨了DelphiFMX在iOS和Android平台上的不同之处,重点关注了TApplicationEvent的行为差异以及APP内置服务器在两种系统中的行为,提醒开发者注意针对不同平台进行适配。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、前言

二、补充下基础知识

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服务就不能用了。

3. 关于TApplicationEvent事件

TApplicationEvent.BecameActive 在android中可能会触发两次,而ios就是一次。

四、总结

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

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

Delphi for iOS开发指南 目录 Delphi XE4 For IOS真机调试配置教程 ........................................................................................................................... 3 Delphi for iOS开发指南():Delphi iOS应用程序开发 .............................................................................................. 63 Delphi for iOS开发指南(1):在Mac上配置你的开发环境 ............................................................................................ 70 Delphi for iOS开发指南(2):在Windows PC上配置你的开发环境 ............................................................................ 88 Delphi for iOS开发指南(3):创建一个FireMonkey iOS应用程序 ............................................................................ 100 Delphi for iOS开发指南(4):在iOS应用程序中使用不同风格的Button组件 .......................................................... 120 Delphi for iOS开发指南(5):在iOS应用程序中使用Calendar组件来选择日期 ...................................................... 129 Delphi for iOS开发指南(6):在iOS应用程序中使用ComboBox组件来从列表中选择某一项 ................................ 136 Delphi for iOS开发指南(7):在iOS应用程序中使用WebBrowser组件 .................................................................. 146 Delphi for iOS开发指南(8):在iOS应用程序中使用Tab组件来显示分页 ................................................................ 160 Delphi for iOS开发指南(9):在iOS应用程序中使用ListBox组件来显示TableView ............................................. 179 Delphi for iOS开发指南(10): 在iOS应用程序中使用Layout来调整窗体尺寸或排列方向 .................................... 205 Delphi for iOS开发指南(11):在iOS应用程序中拍照并共享照片 .............................................................................. 218 Delphi for iOS开发指南(12):在iOS Device中使用地理定位 ................................................................................... 230 Delphi for iOS开发指南(13):在iOS Device中使用通知中心 ................................................................................... 254 Delphi for iOS开发指南(14):在iOS应用程序中使用InterBase ToGo ................................................................... 283 Delphi for iOS开发指南(15):在iOS应用程序中使用SQLite ................................................................................... 311 Delphi for iOS开发指南(16):在iOS客户端应用程序中连接企业级数据库 ............................................................... 337 Delphi For iOS开发指南(17):让应用程序禁止竖屏(也就是只显示横屏) .................................................................... 360 Delphi For iOS开发指南(18):让Delphi XE4开发iOS应用显示为中文名称 ....................................................... 365 Delphi XE8实现移动端的消息推送(个推) .................................................................................................................... 373 Delphi XE10实现移动端支付宝支付接口(含源码) ....................................................................................................... 379 Delphi XE10实现移动端微信支付接口(含源码) ........................................................................................................... 401 Delphi XE10调用百度地图百度导航 ......................................................................................................................... 429 Delphi XE10支持IOS IPV6的处理 ............................................................................................................................. 440
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海纳老吴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值