2013-12-18 18 views

cevap

5

Bu sizin kodu olmadan söylemek zor, ama bu durum görüyordum ama bitmiş yükleme önce ben uzakta önizleme ayrılana sadece. Benim durumumda

, ben onSurfaceCreated yönteminden kapalı bir AsyncTask başladı çünkü yol açmasına karşın ediliyordu o zaman ben yüzeyi zaten imha edildiğini surfaceHolder.lockCanvas() denilen noktaya gidene.

Bu almak için ben onSurfaceDestroyed yöntemini overrode ve vardı değişken küresel böyle drawOk denen sınıfına:

@Override 
    public void onSurfaceCreated(SurfaceHolder holder) { 
     super.onSurfaceCreated(holder); 
     handler.post(reload); 
     drawOk = true; 
    } 

    @Override 
    public void onSurfaceDestroyed(SurfaceHolder holder) { 
     super.onSurfaceDestroyed(holder); 
     handler.removeCallbacks(reload); 
     drawOk = false; 
    } 

    @Override 
    public void onVisibilityChanged(boolean visible) { 
     super.onVisibilityChanged(visible); 
     if(visible) { 
      handler.post(reload); 
      drawOk = true; 
     } else { 
      handler.removeCallbacks(reload); 
      drawOk = false; 
     } 
    } 

    private void draw() { 

     SurfaceHolder surfaceHolder = getSurfaceHolder(); 
     Canvas canvas = null; 

     if(drawOk) { 
      canvas = surfaceHolder.lockCanvas(); 
      if(canvas != null) { 
           // ... 
      } 
     } 
    } 

bir surfaceHolder.isCreating() yok, ama bir surfaceHolder.isCreated(). Bunu yapmanın doğru yolu olmayabilir, ama benim için çalışıyor.

İlgili konular