Thread unzuverlässig

ui_3k1

ui_3k1

Gesperrt
197
Hallo,

ich habe gerade ein Problem mit einem Thread.

Ziel ist es ein paar Spielfiguren zu generieren und auf einem Canvas zu zeichnen.
Aktuell funktioniert eigentlich alles ganz gut.

Allerdings hänge ich seit ein paar Stunden am "Pause-Menü".
Sobald ich auf "neues Spiel" oder "Hauptmenü" klicke, wird die App zwanghaft geschlossen. Vermutlich ein Nullpointer. Aus Logcat werde ich nicht wirklich schau und ebenfalls sehr merkwürdig ist, dass es ca. 2x funktioniert (zB ein neues Spiel zu starten) beim 3ten oder 4ten mal dann aber nicht..

Hat jemand eine Idee?

Logcat:
Code:
05-31 15:58:51.070: E/WindowManager(10126):     at android.view.inputmethod.InputMethodManager$ImeInputEventSender.onInputEventFinished(InputMethodManager.java:1987)
05-31 15:58:51.070: E/WindowManager(10126):     at android.view.InputEventSender.dispatchInputEventFinished(InputEventSender.java:141)
05-31 15:58:51.070: E/WindowManager(10126):     at android.os.MessageQueue.nativePollOnce(Native Method)
05-31 15:58:51.070: E/WindowManager(10126):     at android.os.MessageQueue.next(MessageQueue.java:138)
05-31 15:58:51.070: E/WindowManager(10126):     at android.os.Looper.loop(Looper.java:123)
05-31 15:58:51.070: E/WindowManager(10126):     at android.app.ActivityThread.main(ActivityThread.java:5154)
05-31 15:58:51.070: E/WindowManager(10126):     at java.lang.reflect.Method.invokeNative(Native Method)
05-31 15:58:51.070: E/WindowManager(10126):     at java.lang.reflect.Method.invoke(Method.java:515)
05-31 15:58:51.070: E/WindowManager(10126):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
05-31 15:58:51.070: E/WindowManager(10126):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:609)
05-31 15:58:51.070: E/WindowManager(10126):     at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:133)
05-31 15:58:51.070: E/WindowManager(10126):     at dalvik.system.NativeStart.main(Native Method)
05-31 15:58:56.160: E/AndroidRuntime(10126): FATAL EXCEPTION: Thread-2050
05-31 15:58:56.160: E/AndroidRuntime(10126): Process: de.clevercomputing.shoota, PID: 10126
05-31 15:58:56.160: E/AndroidRuntime(10126): java.lang.NullPointerException
05-31 15:58:56.160: E/AndroidRuntime(10126):     at de.clevercomputing.shoota.GameView.onDraw(GameView.java:78)
05-31 15:58:56.160: E/AndroidRuntime(10126):     at de.clevercomputing.shoota.GameLoop.run(GameLoop.java:29)
05-31 15:59:34.560: E/AndroidRuntime(10250): FATAL EXCEPTION: Thread-2052
05-31 15:59:34.560: E/AndroidRuntime(10250): Process: de.clevercomputing.shoota, PID: 10250
05-31 15:59:34.560: E/AndroidRuntime(10250): java.lang.NullPointerException
05-31 15:59:34.560: E/AndroidRuntime(10250):     at de.clevercomputing.shoota.GameView.onDraw(GameView.java:78)
05-31 15:59:34.560: E/AndroidRuntime(10250):     at de.clevercomputing.shoota.GameLoop.run(GameLoop.java:29)

Aufruf der "Menü-Logik" (handelt sich hierbei um einen Dialog)
Code:
public void onClick(View v) {
        switch (v.getId()) {
            case R.id.bContinue :
                dialog.dismiss();
                dialogState();
                break;
            case R.id.bMainMenu :
                dialog.dismiss();
                gameView.pauseThread();
                Intent menuIntent = new Intent(getApplicationContext(),
                        MyMain.class);
                startActivity(menuIntent);
//                finish();
                break;
            case R.id.bRetry :
                gameView.pauseThread();
                Intent newGameScreen = new Intent(this, GameActivity.class);
                startActivity(newGameScreen);
//                finish();
        }
    }

Danke vorab!
Martin :smile:
 
Ohne Finish packst du einfach eine neue Activity auf den bisherigen Stapel ... Kann es sein, dass da auch eine OutOfMemory-Exception auftritt?
 
  • Danke
Reaktionen: ui_3k1
Danke für den Hinweis. An dem finish lag es (auch). Hab noch einen anderen Fehler gefunden.

Code:
gameView = new GameView(this);
        setContentView([COLOR=Red]new Game(this)[/COLOR]); // <= das war nix :D
So tun sich natürlich Fehler auf, wenn mehrere Instanzen regelrecht unkontrolliert entstehen.^^

Passt jetzt :)

Leider passieren mir immer mal wieder solche Unachtsamkeiten. In Logcat fällt mir sowas allerdings nie auf. Gibts da irgendeine Möglichkeit den Debugger sinnvoll einzusetzen? Wenn ich was in C++ (in VS oder NB) programmiere, sehe ich spätestens bei der "Variablen-Ansicht" (Memory-Ansicht(?) - kA wie die Übersicht heißt) , dass da was mächtig schief läuft. In Eclipse vermisse ich diese Funktion doch hin und wieder mal.
 
Zuletzt bearbeitet:
Wenn ich die Debugging Perspektive an habe, liefert mir

Menu > Window > Show View > Variables

genau sowas.
 
  • Danke
Reaktionen: ui_3k1

Ähnliche Themen

W
  • waltsoft
Antworten
3
Aufrufe
728
waltsoft
W
W
  • waltsoft
Antworten
4
Aufrufe
960
waltsoft
W
znieh99
  • znieh99
Antworten
1
Aufrufe
1.020
znieh99
znieh99
Zurück
Oben Unten