0
我有一款主要工作正常的遊戲應用程序。如果在遊戲過程中有一個電話打進來(我目前沒有觸及屏幕),那麼遊戲就會按照我預期的方式處理隨後的onPause和onResume,並從停止的地方繼續進行。但是,如果我在電話進入程序時崩潰,我正在觸摸屏幕。 Logcat在synchronized (micks_thread_thing.getSurfaceHolder())
處報告NullPointerException
。我認爲有時getSurfaceHolder可能會失敗,但我不知道如何以不同方式編寫代碼以避免錯誤。如果在觸摸屏上打電話時出現故障
public boolean onTouchEvent(MotionEvent event)
{
super.onTouchEvent(event); // not sure if I need this
synchronized (micks_thread_thing.getSurfaceHolder()) // this is the line causing the nullpointerexception
{
if (event.getAction() == MotionEvent.ACTION_DOWN)
{
do_down(event.getX(),event.getY());
}
if (event.getAction() == MotionEvent.ACTION_MOVE)
{
do_move(event.getX(),event.getY());
}
if (event.getAction() == MotionEvent.ACTION_UP)
{
do_up(event.getX(),event.getY());
}
}
return true;
}
micks_thread_thing正在成爲空出於某種原因。如果你試圖將這個完整的同步塊包裝在檢查線程爲空的if語句中呢? – FoamyGuy 2012-04-01 14:09:52
剛試過它,它的工作。把你的評論作爲答案,我會將其標記爲正確。 – Mick 2012-04-01 14:29:48