【问题标题】:Titanium mobile application crashes after a period in the background (including services)Titanium 移动应用程序在后台运行一段时间后崩溃(包括服务)
【发布时间】:2013-08-27 17:14:15
【问题描述】:

作为参考,这是在 Android 上,这是Titanium Forum Post

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

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

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

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

效果很好。

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

我以为这是因为主Activity停止了,所以我决定使用android:alwaysRetainTaskState="true"维护主Activity/任务状态

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

我有一些问题:

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

任何想法都值得赞赏。

【问题讨论】:

  • 它是在实际设备上崩溃还是在模拟器上崩溃?
  • 嗨,Rece!它在实际设备上崩溃,在运行或执行其他几个应用程序时更有可能崩溃(这让我认为这是内存问题)。顺便说一句,这只发生在进行位置报告时。
  • 该死。很遗憾听到这个消息。我以前曾经历过像钛这样的棘手情况。唯一对我有用的是删除任何看起来太复杂/hacky的东西,并尝试以不同的方式来做。希望你能解决!
  • 我的目光转向你的第二点“这个AlarmManager,添加了一个新的Alarm Service,它将每5分钟触发一次。”这很可能会产生内存问题。

标签: android titanium alarmmanager titanium-mobile appcelerator-mobile


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多