Whats the error in my logcat?
Asked Answered
M

3

7

I am almost finished with my game now, but today I encountered a real anoying problem. When I start the game and just wait for a few secounds, the program automaticly shuts down. And I ahve no explonation fot it.

This is what my logcat shows:

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.

I have unfortunately no code to share because I don't know were the program crashes.

EDIT: Drawing 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 method:

@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();
}
Mesomorphic answered 22/1, 2012 at 16:30 Comment(8)
The memory leak isn't in your drawing code. One likely place to look is in your activity lifecycle code. The logs seem to indicate that you are using a client/server architecture; another may be in your IPC or networking code.Weitman
Are yuo sure? When I remove the drawText() method, the program does now crash.Mesomorphic
Hmm. Try loading your font once when the program starts instead of every time you draw text.Weitman
Works fine now thank to that :)Mesomorphic
Glad that worked. I'm curious why you marked thinksteep's answer as the solution.Weitman
Hehe, I cant mark yours because its a comment, but I want the two points so I marked it :)Mesomorphic
Well, I had an answer as well. No worries, though. :)Weitman
Like that, didnt know it was you :)Mesomorphic
W
12

You have a memory leak somewhere. See this blog post in the developer docs for tools that you can use to track it down. Also see this blog post for programming tips to avoid leaking memory in Android applications.

Weitman answered 22/1, 2012 at 16:34 Comment(0)
C
5
~ Channel is unrecoverably broken and will be disposed!  

01-22 16:21:21.443: INFO/ActivityManager(73): Low Memory: No more background processes. 

It seems your game using two much memory (or) memory leak. You may need to log the memory usage of your process using some of techniques described in this discussion and take from there.

Cedar answered 22/1, 2012 at 16:33 Comment(2)
But how can that be when I'm just drawing some text and a one-colored-background? That shouldn't take up much memory. What shall I do?Mesomorphic
@Daniel - if your code is as simple as you describe, post it in its entirety and we can look at where it might be leaking.Weitman
F
1

With the single-step debug, I got the detail error: you must supply layout_height attribute in .... It did work for my situation.

Finkle answered 6/8, 2013 at 5:52 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.