Android 如何处理强制关闭

Android 如何处理强制关闭,android,Android,我目前正在为Android开发一个游戏应用程序。我的问题是,它有时会崩溃并显示“不幸……已停止”对话框。但再次运行应用程序并不会在到达同一点时强制关闭应用程序,它只是偶尔出现 可能发生这种情况的潜在原因是什么?我做了一些研究,但找不到任何东西您应该查看日志,查看可能的异常 如果您没有导致应用程序崩溃的异常情况——这意味着您的代码完全“正常”——则应用程序可能会消耗大量内存。如果您的应用程序使垃圾收集器工作过度,Android可能会关闭您的应用程序 您必须注意不要过度创建对象,或留下一个负载供垃圾

我目前正在为Android开发一个游戏应用程序。我的问题是,它有时会崩溃并显示“不幸……已停止”对话框。但再次运行应用程序并不会在到达同一点时强制关闭应用程序,它只是偶尔出现


可能发生这种情况的潜在原因是什么?我做了一些研究,但找不到任何东西

您应该查看日志,查看可能的异常

如果您没有导致应用程序崩溃的异常情况——这意味着您的代码完全“正常”——则应用程序可能会消耗大量内存。如果您的应用程序使垃圾收集器工作过度,Android可能会关闭您的应用程序

您必须注意不要过度创建对象,或留下一个负载供垃圾收集器清理。这意味着,如果可以重用对象,这是一个好主意


Android清单中有一个
元素。您可以在那里设置一个名为android:largeHeap=“true”的属性。这样,Android将为您的应用程序分配更多内存。但这是最后的手段。尝试首先改进应用程序中的对象管理。这不是一项容易的任务,祝你好运。

你应该检查你的日志,看看是否有可能出现异常

如果您没有导致应用程序崩溃的异常情况——这意味着您的代码完全“正常”——则应用程序可能会消耗大量内存。如果您的应用程序使垃圾收集器工作过度,Android可能会关闭您的应用程序

您必须注意不要过度创建对象,或留下一个负载供垃圾收集器清理。这意味着,如果可以重用对象,这是一个好主意



Android清单中有一个
元素。您可以在那里设置一个名为android:largeHeap=“true”的属性。这样,Android将为您的应用程序分配更多内存。但这是最后的手段。尝试首先改进应用程序中的对象管理。这不是一项容易的任务,祝你好运。

也许你使用堆内存太多了?尝试使用更大的堆请添加logcat messagei是在android版本2.3.3中开发的应用程序,apk大小为30mb。这个游戏是一个点的差异游戏,它有琐事,我把所有的琐事在sqlite中。这是我的另一个问题,我看不到logcat消息,因为我只是传输apk文件到我的手机进行测试。因为我的模拟器没有游戏的大小。你可以在Logcat中找到原因也许你使用堆内存太多了?尝试使用更大的堆请添加logcat messagei是在android版本2.3.3中开发的应用程序,apk大小为30mb。这个游戏是一个点的差异游戏,它有琐事,我把所有的琐事在sqlite中。这是我的另一个问题,我看不到logcat消息,因为我只是传输apk文件到我的手机进行测试。因为我的模拟器没有游戏的大小。你可以在Logcatyes中找到原因。我真的认为我在代码中使用了太多的对象和变量,它们太长了,一些活动有相同的代码。我不熟悉如何处理相同代码的类,因为我是编程新手,从字面上讲,代码非常复杂long@Angel是的,重复的代码被视为编程中的一种不良做法,应该避免。你必须考虑模块化你的应用程序。如果你看到一些东西开始重复,你可以好好想一想,我如何才能做到这一点,把它放在其他地方,我可以在所有这些部分重复使用它-现在我正在重复它,谢谢,我会尽量减少所有重复的代码。我只是想澄清一点,你为什么说做最后的选择?使用@Angel不是很明智吗?基本上,首先检查对象管理是一种很好的做法。但是您可以从一开始就实现largeHead。是的,我真的认为我在代码中使用了太多的对象和变量,它们太长了,有些活动有相同的代码。我不熟悉如何处理相同代码的类,因为我是编程新手,从字面上讲,代码非常复杂long@Angel是的,重复的代码被视为编程中的一种不良做法,应该避免。你必须考虑模块化你的应用程序。如果你看到一些东西开始重复,你可以好好想一想,我如何才能做到这一点,把它放在其他地方,我可以在所有这些部分重复使用它-现在我正在重复它,谢谢,我会尽量减少所有重复的代码。我只是想澄清一点,你为什么说做最后的选择?使用@Angel不是很明智吗?基本上,首先检查对象管理是一种很好的做法。但是您可以从一开始就实现largeHead。如果这是一场比赛,那没关系。