Android活动默默退出

时间:2011-12-31 12:22:40

标签: android opengl-es-2.0

我的应用程序有一个启动画面活动,并启动主活动的意图,其中包含一个openGL视图。

有些用户报告游戏退出并重新开始。

我确定这是一个错误,但它失败了,所以我没有收到任何崩溃报告。

什么能导致它像这样无声地失败?这样一种方式,即应用程序循环并且用户看不到强制关闭窗口。

编辑:我已通过在slapsh活动的清单中放入noHistory =“true”来停止启动屏幕重启。现在用户只是报告它以静默方式退出。会导致什么?!

Edit2:如果有任何线索,我最近从SDK r10更新到SDK r16,我相信我已经删除了所有其他更改,如果可以,我会回到r10,但我可以找不到路。

编辑1月19日:我找到了此问题的根本原因。在某些时候谷歌向SDK介绍了一个名为“png crush”的功能。并且PowerVR并不总是很乐意加载这些纹理。有关详细信息和解决方案,请参阅我的其他问题here

4 个答案:

答案 0 :(得分:3)

没有源代码,很难说出真正发生了什么。尝试在具有不同API级别的模拟器上进行调试,看看是否可以重现它。

如果您无法复制,建议您查看ACRABugSense。使用这些第三方崩溃报告插件非常简单,您甚至可以手动报告静默异常。

答案 1 :(得分:2)

您使用的是某些原生代码吗?因为如果存在段错误,它会将堆栈跟踪打印到logcat,但它不会创建Uncought Exception(所以在这种情况下,像ACRA这样的插件是无用的,即使我可以推荐ACRA很多)

答案 2 :(得分:1)

它确实发生在我的应用程序中,经常在开发 - 调试期间发生,通常是由于以下问题。

  • GPU进入内存不足状态,因为使用VBO分配的内存太多。这通常取决于并非总是正确释放VBO的事实。当它真的发生时,在我简陋的经历中,就像托管你的应用程序的虚拟机死了一样。很遗憾,您无法检查用户的logcat。

问题非常多变,因为它取决于GPU类型和GPU可用的内存。 例如,在我的galaxy选项卡上,它发生在我的基本摩托罗拉Defy之后(在加载级别和VBO方面)。

这会在故障排除中造成很多麻烦。

:)

答案 3 :(得分:0)

只能重写默认异常行为 - UncaughtExceptionHandler。您可以创建自己的类ExceptionHandler implements UncaughtExceptionHandler,并根据需要处理异常 - 将其发送给远程服务器或其他。要注册它,您应该创建Application类:

public class YourApplication extends Application {
@Override
public void onCreate() {
    super.onCreate();
    Thread.setDefaultUncaughtExceptionHandler(new ExceptionHandler(this.getApplicationContext()));
    }
}

并在清单文件中注册此类

<application 
    android:name="your.package.name.YourApplication" 
    ... >
         ...
</application>