我需要使用 delphi XE5 (firemonkey) 写一些安卓服务。这个服务需要在后台运行并定期读取短信收件箱,将其写入到 sqllite 数据库中(备份短信)。
我知道如何读取短信并将其写入数据库,但是我不知道如何将应用程序作为服务在后台运行。
有什么好的想法吗?
P.S.:感谢您的回答。 P.P.S.:对不起,我的英语不太好。
我需要使用 delphi XE5 (firemonkey) 写一些安卓服务。这个服务需要在后台运行并定期读取短信收件箱,将其写入到 sqllite 数据库中(备份短信)。
我知道如何读取短信并将其写入数据库,但是我不知道如何将应用程序作为服务在后台运行。
有什么好的想法吗?
P.S.:感谢您的回答。 P.P.S.:对不起,我的英语不太好。
Brian Long已经在这个主题上发表了两篇文章:
http://blog.blong.com/2013/11/delphi-and-android-services.html
http://blog.blong.com/2013/11/delphi-and-android-services-part-2.html
Android服务与Windows服务不同。如果您使用Android服务,则仍在应用程序的主线程中运行。它们会在设备进入休眠模式时停止。此外,系统可以在低内存和可能的其他情况下终止服务。
根据文档:
通常,启动的服务执行单个操作并不向调用者返回结果。例如,它可能通过网络下载或上传文件。当操作完成时,服务应该停止自身。
以及
"如果服务已启动且长时间运行,则系统将逐渐降低其在后台任务列表中的位置,服务将变得高度容易受到终止"
AlarmManager可能是更好的选择而不是服务。这是一个系统服务,可以在您告诉它何时执行操作(例如定期执行)时执行操作。