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.
kodunuzu yazın .. –