El fondo de pantalla se bloquea con error – queueBuffer: buffer de cola de errores en SurfaceTexture


Live Wallpaper se bloquea, el código de abajo

public void render(){ Canvas canvas = null; try{ canvas = this._surfaceHolder.lockCanvas(null); synchronized (this._surfaceHolder) { this.onDraw(canvas); } }catch(Exception e){ Log.w("Surface holder ", e.toString());} finally{ if(canvas != null){ this._surfaceHolder.unlockCanvasAndPost(canvas); } } } protected void onDraw(Canvas canvas) { this.renderBackGround(canvas); for (Renderable renderable : this._fishes) { renderable.render(canvas); } }; 

Se bloquea con el siguiente error

06-07 19: 49: 09.143: E / SurfaceTextureClient (13629): queueBuffer: buffer de cola de errores a SurfaceTexture, -19

06-07 19: 49: 09.143: E / SurfaceTextureClient (13629): queueBuffer (handle = 0x1c1b30) falló (No hay dispositivo) 06-07 19: 49: 09.143: W / dalvikvm (13629): threadid = 11: Con excepción sin capturar (grupo = 0x40c671f8) 06-07 19: 49: 09.143: E / AndroidRuntime (13629): EXCEPCIÓN FATAL: Thread-692

06-07 19: 49: 09.143: E / AndroidRuntime (13629): java.lang.IllegalArgumentException

06-07 19: 49: 09.143: E / AndroidRuntime (13629): en android.view.Surface.unlockCanvasAndPost (Método nativo)

06-07 19: 49: 09.143: E / AndroidRuntime (13629): en com.android.internal.view.BaseSurfaceHolder.unlockCanvasAndPost (BaseSurfaceHolder.java:215)

gracias por adelantado

Esto suele suceder cuando gira el dispositivo en el selector de fondos de pantalla en vivo. La única solución que he encontrado es coger la IllegalArgumentException e ignorarla.

 if (canvas != null) { try { holder.unlockCanvasAndPost(canvas); } catch (IllegalArgumentException e) { // Ignore weird bug when rotating in live wallpaper picker } } 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.