Was ist der Fehler in meinem logcat?

Ich bin fast fertig mit meinem Spiel heute, aber heute stieß ich auf eine echt nervige problem. Wenn ich das Spiel starten und einfach warten, für ein paar secounds, wird das Programm automatisch beendet. Und ich habe keine explonation fot es.

Dies ist, was mein logcat zeigt:

01-22 16:20:31.232: DEBUG/szipinf(333): Initializing inflate state
01-22 16:20:31.563: DEBUG/PhoneWindow(333): couldn't save which view has focus because the focused view com.JDLApps.Snake.FrameWork.AndroidFastRenderView@4050f950 has no id.
01-22 16:20:36.362: WARN/ActivityManager(73): Activity pause timeout for HistoryRecord{406532f8 com.JDL.Apps.Snake/.SnakeGame}
01-22 16:20:43.682: INFO/ActivityManager(73): Start proc com.android.launcher for activity com.android.launcher/com.android.launcher2.Launcher: pid=358 uid=10026 gids={}
01-22 16:21:20.393: ERROR/InputDispatcher(73): channel '406762c0 com.JDL.Apps.Snake/com.JDL.Apps.Snake.SnakeGame (server)' ~ Consumer closed input channel or an error occurred.  events=0x8
01-22 16:21:20.402: ERROR/InputDispatcher(73): channel '406762c0 com.JDL.Apps.Snake/com.JDL.Apps.Snake.SnakeGame (server)' ~ Channel is unrecoverably broken and will be disposed!
01-22 16:21:21.092: INFO/WindowManager(73): WIN DEATH: Window{406762c0 com.JDL.Apps.Snake/com.JDL.Apps.Snake.SnakeGame paused=false}
01-22 16:21:21.142: WARN/ActivityManager(73): Timeout of broadcast BroadcastRecord{40728640 android.intent.action.TIME_TICK} - receiver=android.app.LoadedApk$ReceiverDispatcher$InnerReceiver@406300f8, started 56630ms ago
01-22 16:21:21.142: WARN/ActivityManager(73): Receiver during timeout: BroadcastFilter{4062f930 ReceiverList{4062f8b8 73 system/1000 local:406300f8}}
01-22 16:21:21.172: INFO/ActivityManager(73): Process com.JDL.Apps.Snake (pid 333) has died.
01-22 16:21:21.362: INFO/WindowManager(73): WIN DEATH: Window{4072b188 SurfaceView paused=false}
01-22 16:21:21.443: INFO/ActivityManager(73): Low Memory: No more background processes.

Habe ich leider kein code-share, da ich nicht weiß waren, stürzt das Programm ab.

EDIT: Zeichnung-code:

@Override
public void screen(float deltaTime) {
    Graphics g = app.getGraphics();

    g.drawPixmap(Assets.background, 0, 0);

    g.drawPixmap(Assets.facebook, 750, 20);

    g.drawText("SNAKE", 10, 150, Color.BLACK, 150, AndroidGraphics.LEFT,
            null, 0);
    g.drawText("START", g.getWidth() / 2, g.getHeight() - 20, Color.BLACK,
            120, AndroidGraphics.CENTER, startRec, 0);
    g.drawText("HIGHSCORE", 20, 275, Color.BLACK, 50, AndroidGraphics.LEFT,
            highRec, 0);
    g.drawText("MORE APPS", g.getWidth() - 20, 275, Color.BLACK, 50,
            AndroidGraphics.RIGHT, moreRec, 0);
    if (Settings.soundEnabled)
        g.drawPixmap(Assets.buttons, new Rect(0, 0, 100, 100), new Rect(0,
                380, 100, 480));
    else
        g.drawPixmap(Assets.buttons, new Rect(100, 0, 200, 100), new Rect(
                0, 380, 100, 480));
}

drawText-Methode:

@Override
public void drawText(String text, int x, int y, int color, int size,
        int position, Rect bounds, int rotation) {
    if (position == LEFT)
        paint.setTextAlign(Paint.Align.LEFT);
    else if (position == CENTER)
        paint.setTextAlign(Paint.Align.CENTER);
    else if (position == RIGHT)
        paint.setTextAlign(Paint.Align.RIGHT);
    else
        return;
    paint.setColor(color);
    Typeface typeface = Typeface.createFromAsset(assets, "typewrite.TTF");
    paint.setTypeface(typeface);
    paint.setTextSize(size);
    if (bounds != null) {
        Rect rec = new Rect();
        paint.getTextBounds(text, 0, text.length(), rec);
        bounds.bottom = y;
        bounds.top = y - rec.height();
        if (position == CENTER) {
            bounds.left = x - rec.width() / 2;
            bounds.right = x + rec.width() / 2;
        } else if (position == RIGHT) {
            bounds.left = x - rec.width();
            bounds.right = x;
        } else if (position == LEFT) {
            bounds.left = x;
            bounds.right = x + rec.width();
        } else
            return;
    }
    canvas.save();
    canvas.rotate(rotation, x, y);
    canvas.drawText(text, x, y, paint);
    canvas.restore();
}
Der Speicherverlust nicht in Ihre Zeichnung code. Ein wahrscheinlicher Ort zu suchen ist in Ihrem activity-lifecycle - code. Die Protokolle scheinen zu zeigen, dass Sie über einen client - /server-Architektur; der andere kann in Ihr IPC-oder Netzwerk-code.
Sind Sie sicher? Wenn ich entfernen Sie die drawText () - Methode, das Programm wird jetzt der Absturz.
Hmm. Laden Sie Ihre schriftart einmal, wenn das Programm startet, anstatt jedes mal, wenn Sie text zeichnen.
Funktioniert jetzt danke 🙂
Froh, dass es funktionierte. Ich bin neugierig, warum Sie markiert thinksteep Antwort als Lösung.

InformationsquelleAutor Daniel | 2012-01-22

Schreibe einen Kommentar