1

我的情况是这样的,我有一个名为 HomeGUI.java 的应用程序主页,在 HomeGUI 中有一个按钮,当它被按下时,它会带来意图并跳转到下一个活动 ARTAAD_AR.java,我的应用程序是增强现实应用程序仅供参考,所以当我使用我的相机(在 ARTAAD_AR.java 中)四处冲浪时,但奇怪的事情发生了......每当我冲浪 15 秒时,活动将关闭并返回 HomeGUI.java,这是我的主页,此事件没有显示任何崩溃消息,如“不幸 bla bla 已停止。”,没有任何消息,它只是自动强制返回之前的活动。附加组件,我尝试将 ARTAAD_AR.java 设置为我的第一个主要活动,但它再次强制关闭并返回我的智能手机主页启动器而没有任何通知。

这是我的 logcat:http://pastebin.com/dvi7MBML 这是我的 AndroidManifest: http: //pastebin.com/Y5f46JJF

如果你看我的 logcat,请看第 4 行和第 5 行,我怀疑第 5 行的开始是我的活动过程被强制返回或退出......

如果您需要查看我的 HomeGUI.java 和 ARTAAD_AR.java,请告诉我

谢谢你。

4

3 回答 3

0

[删除之前的答案,完全错误]。

我怀疑您添加了太多标记,或者您在 android.graphics.Paint.native_measureText 中遇到以下错误(JNI 包装器中的内存泄漏)

于 2013-05-29T12:49:25.333 回答
0

在 com/jwetherell/augmented_reality/ui/objects/PaintableObject.java

尝试更改方法 getTextWidth():

private StaticLayout measure(TextPaint textPaint, String text, Integer wrapWidth) {
    int boundedWidth = Integer.MAX_VALUE;
    if (wrapWidth != null && wrapWidth > 0) {
        boundedWidth = wrapWidth;
    }
    StaticLayout layout = new StaticLayout(text, textPaint, boundedWidth, Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false);
    return layout;
}

private float getMaxLineWidth(StaticLayout layout) {
    float maxLine = 0.0f;
    int lineCount = layout.getLineCount();
    for (int i=0; i<lineCount; i++) {
        if (layout.getLineWidth(0) > maxLine) {
            maxLine = layout.getLineWidth(0);
        }
    }
    return maxLine;
}

public float getTextWidth(String text) {
    if (text == null) throw new NullPointerException();

    TextPaint textPaint = new TextPaint(paint);
    int widthWrap = 1000; // you may have to change this
    StaticLayout layout = measure(textPaint, text, widthWrap);
    return getMaxLineWidth(layout);
}

我相信这是一个 JNI 问题,论文是已知 JNI 问题的解决方法。我还没有编译代码,所以可能会有一些错误,但你明白了。

于 2013-05-29T23:29:10.510 回答
0

我刚刚遇到了同样的问题,但我通过将最小 sdk 设置为 3 将 targetdk 版本设置为 4 来解决它。

谢谢 ..

于 2014-11-21T11:45:09.013 回答