Cómo fijar la aplicación no responde?

He preparado la aplicación de pintura, mi aplicación contiene una vista personalizada para paint.when dibujamos cualquier cosa en la vista personalizada sólo recoger los píxeles dibujados y almacenar en la lista de array, primero está funcionando bien (pero está tomando mucho tiempo) y la segunda vez " Actividad MyAlphabets (en aplicación MyAlphabets) no responde (fuerza cierre y espera) ".

Mi código es,

public void onDraw(Canvas canvas) { if (myDrawBitmap == null) { myDrawBitmap = Bitmap.createBitmap(canvas.getWidth(), canvas.getHeight(), Bitmap.Config.ARGB_8888); bmpDrawCanvas = new Canvas(myDrawBitmap); intDrawArray = new int[myDrawBitmap.getWidth() * myDrawBitmap.getHeight()]; } if (bmpDrawCanvas != null) { for (Path path : MyActivity.mArryLstPath) { bmpDrawCanvas.drawPath(MyActivity.mPath, mPaintAlphabet); } myDrawBitmap.getPixels(intDrawArray, 0, 220, 0, 0, 220, 305); for (int i = 0; i < intDrawArray.length; i ++) { if (intDrawArray[i] == 0xFFFFFFFF) { if (MyActivity.mArryLstDrawnPixels.contains(i)) { } else { MyActivity.mArryLstDrawnPixels.add(i); } } } 

Cuando hacemos clic en "cerrar la fuerza" Logcat es,

 INFO/ActivityManager(52): Killing process com.qteq.myapplication (pid=225) at user's request INFO/Process(52): Sending signal. PID: 225 SIG: 9 INFO/ActivityManager(52): Process com.qteq.myapplication (pid 225) has died. INFO/WindowManager(52): WIN DEATH: Window{608fbd10 com.qtq.myapplication/com.qtq.myapplication.MyApplicationActivity paused=false} INFO/UsageStats(52): Unexpected resume of com.android.launcher while already resumed in com.qtq.myapplication ERROR/gralloc(52): [unregister] handle 0x4a2740 still locked (state=40000001) WARN/InputManagerService(52): Got RemoteException sending setActive(false) notification to pid 225 uid 10025 

Esta es la forma correcta de recoger los píxeles de color en el momento de draw.Please me ayudan ..

Cómo resolver este problema. por favor, ayúdame..

Su aplicación está obligada a obtener "aplicación no responde" errores ya que está haciendo todo su cálculo, incluida la asignación en el hilo de la interfaz de usuario ( onDraw ).

En primer lugar, debe intentar mover los cálculos en un hilo no-ui (consulte AsyncTask ). Cualquier operación que esté tomando más de 20ms está llamada a invocar el mensaje "Application Not responding".

En segundo lugar, usted debe tratar de refactorizar su código de tal manera que no tiene que realizar el cálculo cada vez que tiene que dibujar. Básicamente, hacer que su imagen es un mapa de bits fuera de la pantalla, la caché y hacerla desde la copia en caché en onDraw . El alcance de "cómo", me temo, está más allá del alcance de esta discusión.

  • Cómo Canvas.drawText () realmente dibuja el texto?
  • La vista personalizada de Android vuelve a la posición original al actualizar
  • Android: cambia la vista de título personalizado en tiempo de ejecución
  • Visor dinámico de altura
  • SherlockActionBar: Cómo ajustar CustomView contra actionBar
  • No se encontró ningún recurso que coincida con el nombre dado '@ style / Widget.RatingBar.Small'
  • Configurar el color de un objeto Paint en la vista personalizada
  • Vista avanzada de la lista personalizada
  • Mapa de bits no dibujado anti-alias
  • Canvas.drawArc () artefactos
  • Vista personalizada CustomView no utiliza los constructores de vista de 2 o 3 argumentos
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.