0

我正在开发一个使用后台服务的 android 应用程序。我对android应用程序开发没有太多经验,这是我的第一个应用程序。我一直在制作许多 alpha 版本,最近对代码进行了重大更改,并且在尝试卸载应用程序时遇到了冻结问题。这个问题在以前的版本中从未发生过,所以我怀疑我所做的更改导致了这个问题。版本更改后,我使用 sqlite 数据库来存储我的一些数据。该表不是那么大,最多只有大约 5 行,但大约有 5 或 6 列。我正在使用两个大小相似的数据库。在以前和当前版本中,我'

我在三款不同的手机上进行了测试;Nexus S、三星 Galaxy S II (I9100) 和三星 Galaxy Mini (S5570)。它在所有手机上运行良好,但是当我尝试在 Galaxy Mini 上卸载应用程序时,手机显示带有进度条的卸载屏幕,然后冻结。屏幕关闭并且不响应任何按钮。如果我稍等片刻,三星标志就会出现,就像它正在重新启动一样,但实际上并没有重新启动。我可以离开该屏幕的唯一方法是长按电源按钮强制关机,或者取出电池然后重新启动手机。

我怀疑这是内存或 CPU 问题,因为这个问题在其他手机上从未发生过。我试图通过观察 logcat 来诊断这个问题,但我没有看到任何致命的错误消息。我曾尝试在市场上安装其他大尺寸的知名应用程序并试图重现该问题,但它会在没有冻结的情况下卸载,所以我很确定是我的应用程序导致了冻结。

我非常感谢任何有关此的帮助或信息。我在我的应用程序中发现了一些内存泄漏,我正在删除它,但我不知道这会如何导致卸载期间冻结。当我检查手机内存时,内存中有 120MB+ 可用空间,我没有使用外部存储器。我注意到的一件事是 CPU 使用率。我使用 SystemPanel 应用程序监控 CPU 时钟和内存,并观察到 ​​Galaxy mini 的 CPU 时钟处于非常高的百分比。

所以总结一下我的闲逛,

问题:当我尝试卸载我的应用程序时,Galaxy Mini 手机死机。此问题仅发生在 Galaxy Mini(三部手机中)并且仅针对我的应用程序。

我对原因的猜测:

  • 我的后台服务仍在运行并与卸载冲突(听起来很可能,但这在以前的版本中从未发生过)

  • 删除应用程序文件需要很长时间,而且对 Galaxy Mini CPU 来说太费力了(听起来不太可能,因为我的应用程序的最大大小小于 5MB,我尝试卸载大小约为 25MB+ 的愤怒的小鸟)

  • 我的应用程序内存泄漏太多,它耗尽了所有堆内存并一直触发 GC,并且由于 Galaxy Mini 是 Froyo,整个手机冻结并导致卡在某个地方(听起来很可能,但当应用程序实际上正在运行)

  • 我的手机很糟糕并且讨厌我的应用程序(听起来不太可能但可能)

感谢您花时间阅读一篇相当长的帖子,我非常感谢您对可能的原因或此问题的可能解决方案提供任何意见或建议。

4

1 回答 1

1

假设您的应用程序在 Galaxy Mini 上正常运行(例如,CPU 问题仅在卸载期间出现),那么您在 Galaxy Mini 中遇到了一些固件错误。由于您在卸载时无法获得控制权,因此此时您没有责任做任何事情。如果三星在卸载您的应用程序时遇到问题,那是三星的错,而不是您的错。

现在,如果您的应用程序在 Galaxy Mini 上的行为更普遍(例如,当您的应用程序运行时设备运行缓慢),可能表明您的应用程序存在故障,卸载过程通常会加剧这种情况。

于 2012-04-23T23:56:36.937 回答