title: failed to recall onDraw method in View
body: <p>i wanna make something like puzzle(put images together) in my onDraw() method in custom view. so at first i call it and display my whole puzzle as well.
  but after a time i wanna change my puzzle images. so when i change the source of images from another thread and invalidate(),but may app will be forced close.
  from your perspective what should i do to reach this goal??
  here is my code:</p>
  
  <pre><code>protected void onDraw(Canvas canvas) 
  {
      super.onDraw(canvas);
      canvas.drawARGB(100, 255, 255, 0);
      canvas.translate(posX, posY);
      canvas.scale(imageScale,imageScale);
          InitDrawing(canvas);
  
  }
  
   public void InitDrawing(Canvas canvas)
  {
      for (int a = 0 ; a &lt; 5 ;a++)
      {
          for(int i =0 ; i&lt;4 ; i++)
          {
              canvas.drawBitmap(toop,(toop.getWidth()*i )  ,(toop.getHeight()*a) , null);
              downloading  = true;
              IMGnotExisting = true;
              Log.i("Canvas loop", "Showing");
  
          }   
      }
  }
  
  
  public class SDChecker  implements Runnable
  {
      public SDChecker()
      {
  //          String name = s;
          PauseTHR = new Object();
          pause = false;
      }
      @Override
      public void run() 
      {
  //          while( true)
  //          {
              try {
                  Thread.sleep(5000);
              } catch (InterruptedException e) {
                  // TODO Auto-generated catch block
                  e.printStackTrace();
              }
              File file = new File(Environment.getExternalStorageDirectory()+ "/GreatMap","tile0.jpg");
              if (file.exists())
              {
                  toop = BitmapFactory.decodeFile(Environment.getExternalStorageDirectory()+"/GreatMap/tile0.jpg");
                  try {
                      Thread.sleep(100);
                  } catch (InterruptedException e) {
                      // TODO Auto-generated catch block
                      e.printStackTrace();
                  }
                  invalidate();
                  Log.i("Create      bit           map", "Bitmap    create");
  //                  Toast.makeText(getContext(), "loadmap tile", Toast.LENGTH_SHORT);
                  IMGnotExisting = false;
  
              }
              else
              {
                  IMGnotExisting = true;
              }
      }
  }
  </code></pre>