title: WaitingInMainSignalCatcherLoop Error in Android Application
body: <p>I have an android application that refreshes the screen every 33 milliseconds, displaying a rectangle at a pair of coordinates. Here is the code for the custom view:</p>
  
  <pre><code>import android.content.Context;
  import android.graphics.Bitmap;
  import android.graphics.BitmapFactory;
  import android.graphics.Canvas;
  import android.os.Handler;
  import android.util.AttributeSet;
  import android.view.SurfaceHolder;
  import android.view.SurfaceView;
  
  public class OurView extends SurfaceView implements SurfaceHolder.Callback {
  
      private SurfaceHolder holder;
      private Handler handler = new Handler();
      private Bitmap testimg;
      private int xCoord = 500;
      private int yCoord = 500;
      boolean running = false;
      int xPos;
      int yPos;
  
      public OurView(Context context) {
          super(context);
          init();
      }
  
      public OurView(Context context, AttributeSet attrs) {
          super(context, attrs);
          init();
      }
  
      public OurView(Context context, AttributeSet attrs, int defStyle) {
          super(context, attrs, defStyle);
          init();
      }
  
      private void init() {
          holder = getHolder();
          holder.addCallback(this);
          testimg = BitmapFactory.decodeResource(getResources(),R.drawable.testimg);
      }
  
      void moveImage(int xChange, int yChange) {
          this.xCoord = this.xCoord + xChange;
          this.yCoord = this.yCoord + yChange;
      }
  
      void doDraw(Canvas canvas) {
          xPos = this.xCoord + (testimg.getWidth()/2);
          yPos = this.yCoord + (testimg.getHeight()/2);
          canvas.drawARGB(255, 55, 255, 255);
          canvas.drawBitmap(testimg, xPos, yPos, null);
      }
  
      @Override
      public void surfaceCreated(final SurfaceHolder holder) {
          running = true;
          while(running){
  
              handler.postDelayed(new Runnable() {
                  public void run() {
  
                      Canvas canvas = getHolder().lockCanvas();
  
                      if(canvas != null){
                          synchronized (getHolder()) {
                              doDraw(canvas);
                          }
                          holder.unlockCanvasAndPost(canvas);
                      }
  
                  }
              }, 33);
  
          }
      }
  
      @Override
      public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {}
  
  
      @Override
      public void surfaceDestroyed(SurfaceHolder holder) {}
  
  }
  </code></pre>
  
  <p>I used to have a separate thread that handled the drawing, but that caused problems with variables having different values between the threads. When I run this program, I get this error:</p>
  
  <pre><code>04-20 10:54:35.577    1925-1931/com.thatoneprogrammerkid.gameminimum I/art﹕ Thread[2,tid=1931,WaitingInMainSignalCatcherLoop,Thread*=0xae668400,peer=0x12c00080,"Signal Catcher"]: reacting to signal 3
  04-20 10:54:35.577    1925-1931/com.thatoneprogrammerkid.gameminimum I/art﹕ [ 04-20 10:54:35.627  1925: 1931 W/art      ]
  </code></pre>