通常应用程序必须立即关闭,但有时候它们会运行一些不立即关闭的后台任务(例如http连接,写入驱动器的文件等)。他们是不是在乎任何事情并且几乎不关闭应用程序的方式?
答案 0 :(得分:2)
关于英语单词的荒谬可能意味着它们应该是什么,或者基于语境的极端对立:这个词几乎没有'在这种情况下并不意味着“积极地”,这意味着“勉强”#39;或者几乎没有,但我从这里开始假设你的意思是“几乎不接近”。意味着被迫关闭'
似乎Application.Terminate
是#34;官方方式",至少在最近的Delphi版本中。查看TPlatformAndroid.Terminate
中的实现,它确实应该在结束时完成。
请注意,在XE5(包括Update Pack)中,TPlatformAndroid.Terminate
方法为空。 Delphi XE6到XE8具有将IFMXApplicationService.Terminating
设置为True
的基础知识,终止计时器并指示基础本机活动完成对ANativeActivity_finish
的调用。 Delphi 10 Seattle通过触发TForm.OnSaveState
添加到此处,Delphi 10.1 Berlin采取措施确保所有这些代码在FMX线程中安全运行。
还有其他选择,其中有几个有各种缺点。一些看似明显的候选者的缺点是产生运行时错误(·_·,)
无论如何,如果您愿意,可以尝试以下选项:
Close
方法 - >似乎在最近的版本中工作Release
方法 - >如果从主窗体方法调用,则生成EListError
消息不平衡堆栈或队列操作,这要归功于Windows和Android上Release
的行为和实现之间的显着差异< / LI>
DisposeOf
- &gt;如果从事件处理程序调用它会产生访问冲突,这要归功于它的直接效果 - 通常不是一个好结果TAndroidHelper.Activity.finish
(依赖于Androidapi.Helpers单元)或MainActivity.finish
(依赖于FMX.Platform.Android单元)来调用底层Android活动的finish
方法) - &gt;似乎工作Halt
- &gt;这是终止您的应用程序的最磨难的方式,不建议这样做:应用程序将突然绕过任何重要的清理代码等。kill(getpid, SIGKILL)
- &gt;另一种极其磨损的方法(可能是最具磨蚀性的),不推荐使用:应用程序将突然绕过任何重要的清理代码等。