给所有使用FMX(FireMonkey)进行开发的忠告!
没有废话,直接正文:
在开始之前,首先我假设您有10年、或者20年甚至是30年的Pascal开发经验,由于种种无法解释且又无法摆脱的原因而不得不使用FMX来进行苦逼的开发,所以,我觉得下面是您所必须要了解的:
一、放弃,放弃,再放弃!
这句话我宁愿每天说100万遍,宁愿让它长在您的脑门上,刻在您的脑子里,穿在您的衣服上!所以,请放弃使用FMX的开发,放弃,放弃,再放弃!不要问为什么。。。如果,您某天发现这段话是对的,请一定要对我点赞!
二、不幸的阻塞
好了,您没有被上面一段话吓倒,视死如归、大义凛然、义无反顾、破釜沉舟、依然决然的要使用FMX。很好,您面临的第一个问题就是:界面(UI)阻塞,简单点儿说,UI纯粹是用来显示数据的,除此之外,它不应该有任何功能,也不应该阻塞任何操作!但是,由于Windows上的开发习惯,你已经适应了MessageBox,ShowModal等等阻塞,所以,这是第一个障碍,您必须跨过去!方法:
删除或改写所有ShowMessage,MessageBox,ShowModal等等阻塞UI的代码,如果不确定,请直接删除,因为这就是万恶之源,一切未知可怕的错误几乎都来自于这些简简单单的阻塞!它们的存在都在时时刻刻提醒着你,那里有一个定时炸弹,一个不知道什么时候就会爆炸的定时炸弹!所以一定要记住:除了让UI显示数据外,不要让它做任何无聊的事情!
三、多线程交互
记住,所有UI操作包括释放理论上都应该在主线程中进行,如果要在数据线程中进行UI显示(操作),请一定记得线程同步!线程同步!线程同步!否则,各种AV错误会变着法的把你折磨得死去活来,欲仙欲死,痛不欲生,泪如泉涌,暴跳如雷。。。也许您还有更多更可怕的成语来描述您心中的那无数匹羊驼。。。
四、理解差异
上面的二和三如果能让你顺利过关的话,我应该说:恭喜你,恭喜蜕皮成功!蜕皮的疼痛应该去问蛇,问螃蟹,问所有一切有壳限制成长的生物,你有和他们相同的疼痛时也许才能说您准备好更进一步了。
回归正题,这里的差异指的是您日常开发中的Windows和移动端的差异,你需要认真理解并每天重新升级自己对这种差异的认知,否则,极有可能猫也没画成,老虎也没影。。。
好吧,这么说吧,Android开发能让你再蜕一层皮,IOS开发依然能让你再蜕一层皮,那些说“一套代码到处编译”的忽悠小白还是没问题的,但是,您得仔细想想:您能这么容易被忽悠吗?
五、可怕的第三方
如果说,经过四的蜕皮,您已经准备开始大展拳脚的话,我建议您还是先了解一下如何集成第三方SDK(工具)吧。除非您绝不用任何第三方的SDK,那么问题来了,如果不用第三方,您开发毛线啊???有意义吗?
经过艰苦卓绝、痛不欲生的漫长熬夜岁月后,您终于把要用到的第三方SDK给集成进来了,好吧,恭喜你,开发入门终于成功!
六、万里长征终于开始
蜕了好几次皮,终于要开始大展宏图,那么下面这些问题(坑)一定要注意:Z-Order,WebView,各种花哨的显示效果,内存占用的疯狂,奇葩的编译结果,垃圾的垃圾回收,永远改不完的架构Bug以及让你哭得死去活来的编译Bug,还有那永远赶不上操作系统、编译工具的更新,说难听点儿,吃屎都赶不上热乎的。。。即使经过这么痛苦而漫长的蜕变,您也刚刚准备好开始万里长征,心里是不是又跑过去无数群羊驼呢?
七、要成精吗
建国后,我们已经严禁成精了,所以,您可以看看走完上面的2~6步骤要花多少时间,无论您花过还是没有花过,您一定要有一个肯定且正确的概念:使用FMX进行开发,您不可能升天成仙,更不可能半道成精,只有一种可能,那就是,参看第一条!
最后:我很想把这段文字变成吐槽的,但是,请相信,上面这些文字中的每个字都代表一滴泪或者一滴汗,所以,请注意:这段文字绝非吐槽,请自行甄别!
给所有使用FMX(FireMonkey)进行开发的忠告!相关推荐
- fmx 2d3d mix 开发
很多app都会有启动界面,大多数是广告, 其实也可以用动画 fmx 2d中要支持3d,必须使用TViewport3D,然后把3d控件放进去 如果是3d应用,则无需再放TViewport3D, 当然普通 ...
- 关于 Delphi跨平台开发Android调用 JNI JAR java 的说明和注意事项
2Pascal-新时代的Pascal-关于 调用 JNI JAR java 的说明和注意事项,调用第 靠写不下了 - Powered by Discuz! 关于 调用 JNI JAR 的说明和注意事项 ...
- Delphi多平台开发版本选型
以下是Delphi开发的主流版本,从年代最早开始排序: Delphi 7 : 简称D7, Delphi的经典版本,稳定,32位Windows XP 时代的流行. 仅能开发w ...
- 简述WinCE开发特性及忠告
Windows CE与平台开发 Windows CE是微软为嵌入式设备打造的操作系统,而嵌入式设备可谓多种多样,这就要求CE操作系统必须是可定制的,所以微软将Windows CE设计为模块化的操作系统 ...
- RAD Studio 11.2详解其务实改进(Delphi C++ Builder)-Alexandria
RAD Studio 11.2详解其务实改进(Delphi & C++ Builder)-Alexandria 目录 RAD Studio 11.2详解其务实改进(Delphi & C ...
- 跨平台打造移动原生应用的10大武器
编译工具对开发者的影响是直观的,开发者使用JavaScript等语言写出应用的代码,再将它们编译成原生代码.通过原生的API,完成跨平台的操作,最终分发到本地的应用商店中.由此可见,编译工具的选择可以 ...
- Succinctly 中文系列教程 20220109 更新
Succinctly 会计教程 一.会计简明指南 二.收入和费用 三.收入确认 四.组织账目 五.会计原则 六.会计制度报告 七.固定资产 八.应收账款 九.应付账款 十.库存 十一.工资单 十二.总 ...
- XE7 Unit scope names
今天编译RM报表 7.0 for XE7 ,build设计时包,提示 {$IFDEF JPEG}, JPEG{$ENDIF} 没有找到 JPEG.DCU,这个应该是XE7自带. 后来 在项目选项里,编 ...
- SecureBlackbox 2022细粒度控制的同时
SecureBlackbox 2022细粒度控制的同时 SecureBlackbox包括多种功能强大的数据保护.安全存储和安全传输组件.这些组件专为在最苛刻的条件下使用而设计,在提供对所有安全选项的细 ...
- 零基础学JAVA]Java SE基础部分-01. Java发展及JDK配置
1.课程名称:Java发展及JDK配置 本季介绍了JAVA的发展过程,包括JDK的发展历程,path路径的配置和classpath的配置及作用.并简单讲解了一个简单的JAVA程序,并通过此程序讲解了J ...
最新文章
- angular2初入眼帘之-搭个环境
- Tomcat配置问题解决方法
- 使用.NET中的XML注释(一) -- XML注释标签讲解
- [转]leo谈“80后”程序员为什么找不到工作?(1)
- 使用 el 能否定义作用域变量_Jsp之El表达和JSTL标签库
- mysql傻瓜教程_mysql索引的使用傻瓜教程_MySQL
- 51nod 1243 排船的问题(二分)
- mysql5.7 undo_MySQL 5.7新特性之在線收縮undo表空間
- 伯克利(Berkeley cs61b)git使用
- IPC网络高清摄像机基础知识1(IPC芯片市场分析以及“搅局者”华为海思 “来自2013年”)
- Tableau实战 Tableau官网各版块访问情况(四)各网址情况分析
- 8000字干货:那些很厉害的人是怎么构建知识体系的
- 短视频运营详解:抖音变现目前流行的是七种方式之一电商卖货
- XLSX实现导出带样式的Excel表格的坑
- 零基础搭建私人影音媒体平台【远程访问Jellyfin播放器】
- ARM CPU挂死和总线挂死的DS-5调试方法
- pybind11学习 | 在Python中构建编译生成pyd文件
- Debian 查看与修改IP,设置多ip,network与networkManager配置
- 权限维持之:SID History 域控权限维持
- 【计算机网络】-【考研复试面试】-整合