java - 如果触摸屏幕时有电话进来会崩溃

标签 java android eclipse

我有一个游戏应用程序,大部分运行良好。如果在游戏过程中接到电话(并且我当前没有触摸屏幕),那么游戏将完全按照我的预期处理随后的 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;
    }

最佳答案

尝试将整个同步块(synchronized block)包装在线程上的空检查中:

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());
    }
  }
}

关于java - 如果触摸屏幕时有电话进来会崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9964824/

相关文章:

java - Embedded Jetty 为什么要使用 join

java - String.format 不显示完整消息

java - Excel 中的图形和图表

java - 手机应用程序崩溃

android - 使用 Eclipse 测试 PhoneGap 应用程序时不断收到 "A network error occurred"

Java XPath : Can't find an element

Android float 操作按钮打开小 View

java - CWAC 相机 JAR 的 Dalvik 问题

java - Eclipse JFrame 警告

java - tomcat 8.0 在eclipse 中运行一个简单的jersey 程序时启动失败