簡體   English   中英

如果在觸摸屏幕時打進電話會崩潰

[英]Crash if phone call comes in while touching screen

我有一個游戲應用程序,基本上可以正常運行。 如果在游戲中打來電話(並且我目前未觸摸屏幕),則游戲將完全按照我的期望處理后續的onPause和onResume,並且從中斷處繼續進行。 但是,如果我正在觸摸屏幕,那么程序中的調用就會崩潰。 Logcat在synchronized (micks_thread_thing.getSurfaceHolder())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;
    }

嘗試將整個同步塊包裝在線程的空檢查中:

if(micks_thread_thing != null) 
{
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());
    }
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM