【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. 不同的平臺,對于網絡服務功能處理方式不一樣,所以需要單獨處理;

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/210539.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/210539.shtml
英文地址,請注明出處:http://en.pswp.cn/news/210539.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

AI 繪畫 | Stable Diffusion 人物換臉

前言 這篇文章教會你如何使用Stable Diffusion WEB UI擴展插件ReActor輕松實現圖片中的人物換臉。ReActor 是 Stable Diffusion WebUI 的擴展,它允許在圖像中非常簡單準確地進行人臉替換(人臉交換)。 安裝環境準備 安裝 Visual Studio 2022(例如,社區版本 - 需要此步驟來…

十八、FreeRTOS之FreeRTOS任務通知

本節需要掌握以下內容: 1、任務通知的簡介(了解) 2、任務通知值和通知狀態(熟悉) 3、任務通知相關API函數介紹(熟悉) 4、任務通知模擬信號量實驗(掌握) 5、任務通知…

智能無人零售:革新零售消費體驗的未來

智能無人零售:革新零售消費體驗的未來 在當今數字化時代,智能無人零售正以驚人的速度改變著我們的購物方式和消費體驗。這一新興領域的發展,為消費者帶來了前所未有的便利和個性化選擇。 智能無人零售是指利用先進的智能技術和自動化系統&…

【面試題:對象引用在內存中存在何處?基于何種計算機原理獲取對象的值?】

嗨,小伙伴們!小米在這里啦,今天給大家分享一個超有趣的話題——面試題:對象引用是存在內存哪,基于什么計算機原理獲取對象的值?廢話不多說,讓我們一起深入了解一下這個充滿技術魅力的問題吧&…

Java 安全框架shiro初探之一

1.Java安全框架除了spring家族另一個就是shiro框架 不過最近還有一個國產框架很好用:Sa-Token 添加鏈接描述,想了解的小伙伴可以去look look shiro 官方文檔 (https://shiro.apache.org/) 1. 學習教程 參考 (https://www.w3cschool.cn/shiro/) Apac…

2024濟南大健康展會,第六屆中國國際健康產業博覽會5月舉辦

大力發展全國健康事業 助力健康中國行動戰略 DJK 2024第6屆中國(濟南)國際大健康產業博覽會 The 2024 sixth China (Jinan) International Big Health Industry Expo 時間:2024年05月27日—29日 場館:中國濟南黃河國際會展中心 …

java中實現線程池的方式有哪些?

在 Java 中,實現線程池的方式主要有兩種: ThreadPoolExecutor 類: ThreadPoolExecutor 是 Java 提供的靈活、強大的線程池實現類。通過創建 ThreadPoolExecutor 對象,可以自定義線程池的各種參數,包括核心線程數、最大…

JavaScript-節點操作

節點操作 DOM節點 DOM節點:DOM樹里每一個內容都稱之為節點 節點類型: 元素節點 所有的標簽 比如body、divhtml時跟節點 屬性節點 所有的屬性,比如href 文本節點 所有的文本 其他 查找節點 節點的關系:針對的找親戚返回的都是…

java_springboot_ssm流浪寵物救助報名管理系統

用戶: 注冊登錄 寵物百科:提供一些養寵物的專業知識、養寵前的注意事項等等 寵物信息:包括寵物圖片、品種、性別、年齡、疫苗、領取要求等內容 寵物領養:領養人自己的詳細住址、收入情況、有無養過寵物的記錄(有則出示…

學習Java第64天,請求轉發和響應重定向

請求轉發和響應重定向 概述 什么是請求轉發和響應重定向 請求轉發和響應重定向是web應用中間接訪問項目資源的兩種手段,也是Servlet控制頁面跳轉的兩種手段 請求轉發通過HttpServletRequest實現,響應重定向通過HttpServletResponse實現 請求轉發生活舉例: 張三找李四借錢,李四…

人工智能原理復習--搜索策略(二)

文章目錄 上一篇啟發式搜索與或圖搜索博弈下一篇 上一篇 人工智能原理復習–搜索策略(一) 啟發式搜索 提高一般圖搜索效率的關鍵是優化OPEN表中節點的排序方式 最理想的情況是每次排序OPEN表表首n總在解答路徑上 全局排序–對OPEN表中的所有節點進行…

vue實例事件

實例方法 / 事件 vm.$on 監聽當前實例上的自定義事件。事件可以由 vm.$emit 觸發。回調函數會接收所有傳入事件觸發函數的額外參數。 vm.$on(test, function (msg) {console.log(msg) }) vm.$emit(test, hi) // > "hi"vm.$once( event, callback ) 監聽一個自定義…

Vue筆記(二)基本語法

基本語法 <style> table {border-collapse: collapse;margin:0 auto; } strong {color: rgb(235, 51, 100); }td, th {padding-left: 6px; } table tr td:first-child {width:150px } table tr td:nth-child(2) {width:300px } </style> <template><tabl…

mysql面試題——MVCC

一&#xff1a;什么是MVCC&#xff1f; 多版本并發控制&#xff0c;更好的方式去處理讀-寫沖突&#xff0c;就是為了查詢一些正在被另一個事務更新的行&#xff0c;并且可以看到它們被更新之前的值&#xff0c;這樣在做查詢的時候就不用等待另一個事務釋放鎖。 二&#xff1a…

萬界星空科技mes系統中看板管理

我們很多企業現在都有大屏&#xff0c;那到底萬界星空科技低代碼云mes系統管理中看板管理有什么作用&#xff1f;我總結了幾條: 1.提高車間的生產效率 2.有效的監控設備運行狀況 3.控制生產線運行 4.增加和改善用戶體驗 5.提高工作效率和工作安全性

Zabbix監控騰訊云VPC

一、簡介 私有網絡&#xff08;Virtual Private Cloud&#xff0c;VPC&#xff09;是騰訊云上一塊由用戶自定義的邏輯隔離網絡空間&#xff0c;為云服務器、云數據庫等資源提供安全可控的網絡環境。通過構建邏輯隔離的、用戶自定義配置的網絡空間&#xff0c;用戶能夠提升其云…

vue組件插槽

組件的插槽 組件本身就是一個容器&#xff0c;也可以是一個vue對象&#xff0c;也是一個虛擬DOM 普通插槽 組件本身是一個容器&#xff0c;這個容器本身是空的&#xff0c;當我們把需要封裝的html結構裝進去之后&#xff0c;我們可以認為這個容器被塞滿了&#xff0c;那就意…

WIN11家庭中文版使用ENSP+VirtualBox啟動AR失敗40錯誤+未完全關閉hyper-V,以及安裝VirtualBox兼容性問題

使用版本&#xff1a;eNSP 1.3.00.100VirtualBox 5.2.44WinPcap_4_1_3Wireshark最新版。 win11系統最好按照上述版本安裝&#xff0c;VirtualBox不要安裝更高版本&#xff0c;否則可能出現不兼容情況&#xff0c;Wireshark版本要求還好&#xff0c;安裝順序是VirtualBox 5.2.4…

python+pytest接口自動化之參數關聯

什么是參數關聯&#xff1f; 參數關聯&#xff0c;也叫接口關聯&#xff0c;即接口之間存在參數的聯系或依賴。在完成某一功能業務時&#xff0c;有時需要按順序請求多個接口&#xff0c;此時在某些接口之間可能會存在關聯關系。比如&#xff1a;B接口的某個或某些請求參數是通…

如何利用人工智能+物聯網技術實現自動化設備生產

隨著科技的發展與行業競爭的日益激烈&#xff0c;制造業也逐漸走向智能化發展。制造業的改革是利用物聯網技術和自動化設備&#xff0c;實現生產線的智能化和自適應生產&#xff0c;優化生產流程&#xff0c;提高生產效率和質量&#xff0c;為企業創造更大的價值。 方案概述 智…