2013-05-29 4 views
1

Моя ситуация была такой: у меня есть домашняя страница имени моего приложения HomeGUI.java, есть кнопка в HomeGUI, когда она была нажата, она принесет намерение и перейдет к следующему активность ARTAAD_AR.java, мои приложения были приложениями дополненной реальности FYI, поэтому, когда я занимался серфингом вокруг своей камеры (в ARTAAD_AR.java), но случаются странные вещи ... когда я занимаюсь поиском в течение примерно 15 секунд, деятельность будет закрыта и вернитесь к HomeGUI.java, который является моей домашней страницей, этот инцидент не показывает какого-либо сообщения о сбоях, например «к сожалению, bla bla остановился». Нет никакого сообщения, и он просто автоматически возвращается к предыдущей активности. Добавив, я пробовал настройку ARTAAD_AR.java в качестве моего первого основного вида деятельности, но он снова принудительно закрывается и возвращается в мою домашнюю панель запуска смартфона без какого-либо уведомления.Приложения для Android - Сила активности назад

Это мой LogCat: http://pastebin.com/dvi7MBML Это мой AndroidManifest: http://pastebin.com/Y5f46JJF

Если вы посмотрите на моем LogCat, пожалуйста, посмотрите на линии 4 и 5, я подозреваю, что начало от линии 5, процесс моей деятельности были силы назад или выход ...

Просто дайте мне знать, если вам нужно, чтобы увидеть мой HomeGUI.java и ARTAAD_AR.java

спасибо.

+0

нужно размещать Java-файлы тоже –

+0

Это моя ява HomeGUI.java: http://pastebin.com/vXgQV51S Это мой java ARTAAD_AR.java: http://pastebin.com/TMm1fB7z – Aaron

+0

Похоже, вы потребляете слишком много памяти. –

ответ

0

В ком/jwetherell/augmented_reality/щ/объекты/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. Я не скомпилировал код, поэтому могут возникнуть некоторые ошибки, но вы получите эту идею.

+0

Большое вам спасибо за ваши усилия, я пробовал все три решения, которые вы предоставили, проблема все еще существует, я не знаю, как исправить эту проблему .... – Aaron

+0

это ловушка, которую я запускаю с вашей третье решение -http: //pastebin.com/j7Vsp2pg, спасибо – Aaron

+0

@Aaron Неужели все они терпят неудачу с той же проблемой? – Justin

0

[Удален предыдущий ответ, совершенно неправильный].

Я подозреваю, что вы добавите слишком много маркеров, или вы столкнулись с the following bug в android.graphics.Paint.native_measureText (утечка памяти в обертке JNI)

+0

Я добавил 4 маркера, но в будущем я должен добавить еще 20-е ... так что согласно ссылке, которую вы разместили, я удалю «//» в предотвратить крах? – Aaron

0

Я просто сталкивался с таким же вопросом, но я решил его, поставив минимум на 3 SDK версию targetsdk до 4.

Спасибо ..

Смежные вопросы