繁体   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