Ошибка: «К сожалению, myAppname разобрался».Я получаю сообщение об ошибке при выходе из своего приложения
Я делаю игру в SurfaceView и использую много растровых изображений и звуков. Мой вопрос: что может вызвать эту ошибку? У меня есть Atopd() и выпущен() звуки, когда я выхожу. Есть поток, который работает, я не знаю, должен ли я его убить или нет, и если да, то как ?. Растровые изображения все еще загружаются, когда я выхожу, я должен их освободить, и если да, то как?
Я пробовал разместить изображение ошибки в DDMS, но, похоже, у меня нет достаточного количества точек для размещения изображения ... это смешно.
** ddms говорит;
E/AndroidRuntime(2009): FATAL EXCEPTION: Thread-3207
E/AndroidRuntime(2009): java.lang.NullPointerException
E/AndroidRuntime(2009): at com.example.spaceinvaders.MainActivity$GameView.onDraw(MainActivity.java:478)
E/AndroidRuntime(2009): at com.example.spaceinvaders.GameLogic.run(GameLogic.java:68)**
Line 68 в игровой логики вызывает; this.mGameView.onDraw (холст); Линия 478 в основной деятельности: canvas.drawColor (Color.rgb (38, 132, 3));
Это класс GameLogic:
public class GameLogic extends Thread
{
private SurfaceHolder surfaceHolder;
private GameView mGameView;
private int game_state;
public static final int PAUSE = 0;
public static final int READY = 1;
public static final int RUNNING = 2;
public GameLogic(SurfaceHolder surfaceHolder, GameView mGameView)
{
super();
this.surfaceHolder = surfaceHolder;
this.mGameView = mGameView;
}
public void setGameState(int gamestate)
{
this.game_state = gamestate;
}
public int getGameState()
{
return game_state;
}
@SuppressLint("WrongCall")
@Override
public void run()
{
Canvas canvas;
while (game_state == RUNNING)
{
canvas = null;
try
{
canvas = this.surfaceHolder.lockCanvas();
long time_orig =System.currentTimeMillis();
synchronized (surfaceHolder)
{
//this.mGameView.update();
//this.mGameView.onDraw(canvas);
try
{
Thread.sleep(10);//(4);
}
catch (InterruptedException e1)
{
}
long time_interim = System.currentTimeMillis();
int adj_mov = (int)(time_interim - time_orig);
mGameView.update(adj_mov);
time_orig = time_interim;
this.mGameView.onDraw(canvas);
}
}
finally
{
if (canvas != null)
{
surfaceHolder.unlockCanvasAndPost(canvas);
}
}
}
}
}
игра работает отлично, пока я не ударил кнопку, чтобы выйти обратно.
@ Nobu Games: 1.) in MainActivity;
public void surfaceDestroyed(SurfaceHolder holder)
{
mGameLogic.setGameState(GameLogic.PAUSE);
}
2.) в GameLogic
try
{
Thread.sleep(10);//(4);
}
catch (InterruptedException e1)
{
}
long time_interim = System.currentTimeMillis();
int adj_mov = (int)(time_interim - time_orig);
mGameView.update(adj_mov);
time_orig = time_interim;
if(canvas != null)
this.mGameView.onDraw(canvas);
}
}
finally
{
.... проблема сохраняется. Я благодарю вас за ваше время и знания.
сейчас это журнал дает мне эту ошибку:
04-17 15:08:42.592: E/AndroidRuntime(16286): FATAL EXCEPTION: main
04-17 15:08:42.592: E/AndroidRuntime(16286): android.app.SuperNotCalledException: Activity {com.example.spaceinvaders/com.example.spaceinvaders.MainActivity} did not call through to super.onDestroy()
04-17 15:08:42.592: E/AndroidRuntime(16286): at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3300)
04-17 15:08:42.592: E/AndroidRuntime(16286): at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:3329)
04-17 15:08:42.592: E/AndroidRuntime(16286): at android.app.ActivityThread.access$1200(ActivityThread.java:134)
04-17 15:08:42.592: E/AndroidRuntime(16286): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1266)
04-17 15:08:42.592: E/AndroidRuntime(16286): at android.os.Handler.dispatchMessage(Handler.java:99)
04-17 15:08:42.592: E/AndroidRuntime(16286): at android.os.Looper.loop(Looper.java:137)
04-17 15:08:42.592: E/AndroidRuntime(16286): at android.app.ActivityThread.main(ActivityThread.java:4722)
04-17 15:08:42.592: E/AndroidRuntime(16286): at java.lang.reflect.Method.invokeNative(Native Method)
04-17 15:08:42.592: E/AndroidRuntime(16286): at java.lang.reflect.Method.invoke(Method.java:511)
04-17 15:08:42.592: E/AndroidRuntime(16286): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:787)
04-17 15:08:42.592: E/AndroidRuntime(16286): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:554)
04-17 15:08:42.592: E/AndroidRuntime(16286): at dalvik.system.NativeStart.main(Native Method)
Это мой первый пост, и хотел бы поблагодарить всех вас за помощь, которую вы предоставляете новичкам. LB
Сообщите свой код, где возникла ошибка. Также отправьте свой логарифм. Это поможет нам помочь вам. –
thats proble, я не знаю, что ошибка. У меня есть несколько строк кода ... –
Точка проверки вывода logcat - это определить, где происходит ошибка, а также ее характер. –