0

作为参考,这是在 Android 上,这是Titanium 论坛帖子

我在使用 Appcelerator 完成的几个应用程序中注意到了这个问题,所有这些应用程序:无论它们是简单的应用程序还是复杂的应用程序,但在大型应用程序中更频繁。

例如,我正在开发一个需要每 5 分钟通知一次其位置(GPS 位置)的应用程序。该应用程序在前台工作时运行良好,但是,每次我将应用程序放在后台(如果我使用主页按钮最小化应用程序),应用程序就会崩溃并且所有服务都停止了。

为了通知应用程序,这是我正在使用的流程:

  1. 当我启动应用程序时,我使用AlarmManager 模块启动了一个警报。
  2. 这个AlarmManager,添加了一个新的Alarm Service,每5分钟触发一次。
  3. 每隔 5 分钟,AlarmManager 会启动服务并通知服务器当前位置。

这很好用。

如果我点击“主页”按钮,应用程序有时会崩溃(在应用程序管理器上),但在前台使用其他应用程序而将此应用程序留在后台时会更频繁。

我认为这是因为主 Activity 已停止,所以我决定通过使用来保持主 Activity/任务状态android:alwaysRetainTaskState="true"

如果我重新打开应用程序,应用程序就会重新启动。这种情况在低端设备上比在高端设备上发生得更多,这让我认为这是一个内存问题。

我有一些疑问:

  1. 这是预期的行为吗?
  2. 如果是这样,我该如何减轻这种情况(可能是本机模块/服务?)?
  3. 我当前的流程是执行此操作的最佳流程还是有更好的方法?

任何想法都值得赞赏。

4

1 回答 1

0

回答我自己的问题:经过大量测试,我们发现问题在旧设备上更为常见。

通过查看组件、元素并进行广泛的内存研究,我们发现这实际上与 Android 如何管理应用程序和内存有关。

如果操作系统认为您的应用程序在后台消耗了太多内存,它可以随时将其删除。不管它是否正在执行警报。

对于具有更多内存的设备(较新的设备),问题就消失了。

于 2013-12-18T02:37:44.713 回答