我正在开发一个使用后台服务的Android应用程序。我没有太多的Android应用程序开发经验,这是我的第一个应用程序。我一直在制作大量的alpha版本,最近对代码进行了重大更改,并在尝试卸载应用程序时遇到了冻结问题。这个问题在以前的版本中从未发生过,所以我怀疑我改变的是导致这种情况。版本更改后,我使用sqlite数据库来存储我的一些数据。该表不是很大,最多只有5行,但大约有5或6列。我正在使用两个相似大小的数据库。在以前和当前版本中,我都使用线程进行蓝牙文件传输,还有一些AsyncTasks可以进行数据库读/写和发送电子邮件。
我在三部不同的手机上测试过; Nexus S,三星Galaxy S II(I9100)和三星Galaxy Mini(S5570)。它在所有手机上运行良好,但当我尝试在Galaxy Mini上卸载应用程序时,手机会显示带有进度条的卸载屏幕,然后冻结。屏幕关闭,不响应任何按钮。如果我等待一段时间,三星徽标会显示为重新启动,但它实际上并没有重启。我可以离开该屏幕的唯一方法是长按电源按钮强行关闭电源,或者取出电池然后重新启动手机。
我怀疑这是内存或CPU问题,因为这个问题在其他手机上从未发生过。我试图通过观察logcat来诊断这个问题,但我没有看到任何致命的错误消息。我已经尝试在市场上安装其他众所周知的应用程序,这些应用程序的大小很大,并试图重现问题,但它会在没有冻结的情况下卸载,所以我很确定这是我的应用程序导致冻结。
我真的很感激任何帮助或信息。我已经在我的应用程序中发现了一些内存泄漏,我正在删除它,但我不知道这会在卸载过程中如何导致冻结。当我检查手机的内存时,内部存储器中有120MB +可用空间,而我没有使用外部存储器。我注意到的一件事是CPU使用率。我使用SystemPanel应用程序监视CPU时钟和内存,并观察到Galaxy mini的CPU时钟处于非常高的百分比。
总结一下我的ra ,,
问题:当我尝试卸载我的应用程序时,Galaxy Mini手机会冻结。这个问题只发生在Galaxy Mini(三款手机中),仅适用于我的应用程序。
我对原因的猜测:
我的后台服务仍然在运行并且与卸载相冲突(听起来很可能但以前的版本中从未发生过这种情况)
删除应用程序文件需要很长时间,对于Galaxy Mini CPU来说太紧张了(听起来不太可能,因为我的应用程序的最大大小小于5MB,我尝试卸载大小约为25MB +的愤怒的小鸟) / p>
我的应用程序泄漏内存太多,它耗尽了所有堆内存并一直触发GC,而且由于Galaxy Mini是Froyo,整个手机冻结并导致卡在某个地方(听起来很可能会冻结)当应用程序实际运行时不会发生)
我的手机很糟糕,讨厌我的申请(听起来不太可能,但可能)
感谢您花时间阅读相当长的帖子,我非常感谢有关可能原因或此问题的可能解决方案的任何意见或建议。
答案 0 :(得分:1)
假设您的应用程序通常在Galaxy Mini上正常运行(例如,CPU问题仅在卸载期间),那么您正在绊倒Galaxy Mini中的一些固件错误。由于您在卸载时无法获得控制权,因此您没有义务在此时执行任何操作。如果三星在卸载你的应用时遇到问题,那就是三星的错,不是你的。
现在,如果你的应用程序在Galaxy Mini上一般行为不端(例如,当你的应用程序运行时设备运行缓慢), 可能表示你的应用程序出现故障,卸载过程通常会加剧。