Pantalla negra cuando se abre la aplicación

Sigo recibiendo esta pantalla en negro cuando cada vez que abrir mi aplicación, la única manera de deshacerse de ella es presionar el botón de volver a continuación, ir a la aplicación. Me dijeron por mi amigo que está entrando en el punto muerto, pero no creo que porque cuando compruebo el logcat muestra los mensajes de registro.

Ver

private boolean mGameIsRunning; public void surfaceCreated(SurfaceHolder holder) { // Your own start method. start(); } public void start() { if (!mGameIsRunning) { thread.initLevel(); thread.setRunning(true); thread.start(); mGameIsRunning = true; } else { thread.onResume(); thread.initLevel(); thread.setRunning(true); } } public void surfaceDestroyed(SurfaceHolder holder) { Log.d(TAG, "Surface is being destroyed"); // tell the thread to shut down and wait for it to finish // this is a clean shutdown boolean retry = true; thread.setRunning(false); while (retry) { try { thread.join(); retry = false; } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } Log.d(TAG, "Thread was shut down cleanly"); } 

Hilo

 private Object mPauseLock = new Object(); private boolean mPaused; @Override public void run() { Canvas canvas; Log.d(TAG, "Starting game loop"); while (running) { canvas = null; // try locking the canvas for exclusive pixel editing // in the surface try { canvas = this.mSurfaceHolder.lockCanvas(); synchronized (mSurfaceHolder) { mStartTime = System.currentTimeMillis(); mElapsedTime = System.currentTimeMillis() - mStartTime; this.updateGame(); this.onDraw(canvas); } synchronized(mPauseLock){ while (mPaused) { try { mPauseLock.wait(); } catch (InterruptedException e) { } } } } finally { // in case of an exception the surface is not left in // an inconsistent state if (canvas != null) { mSurfaceHolder.unlockCanvasAndPost(canvas); } } // end finally } } public void onPause() { synchronized (mPauseLock) { mPaused = true; } } public void onResume() { synchronized (mPauseLock) { mPaused = false; mPauseLock.notifyAll(); } } 

Iniciar sesión

 07-08 17:24:41.735: DEBUG/Hitman(3221): View added 07-08 17:24:41.895: DEBUG/(3221): Enemies Spawed 07-08 17:24:41.934: DEBUG/(3221): Starting game loop 07-08 17:24:42.165: INFO/ActivityManager(66): Displayed activity com.android.hitmanassault/.Hitman: 1384 ms (total 1384 ms) 07-08 17:24:46.164: DEBUG/(3221): Enemies Spawed 07-08 17:24:48.914: INFO/ActivityManager(66): Start proc com.android.settings for broadcast com.android.settings/.widget.SettingsAppWidgetProvider: pid=3228 uid=1000 gids={3002, 3001, 3003} 07-08 17:24:48.914: INFO/ActivityManager(66): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10200000 cmp=com.android.launcher/.Launcher } 07-08 17:24:48.924: DEBUG/PhoneWindow(3221): couldn't save which view has focus because the focused view com.android.hitmanassault.HitmanView@44d99528 has no id. 07-08 17:24:48.954: INFO/WindowManager(66): Setting rotation to 0, animFlags=0 07-08 17:24:49.014: INFO/ActivityManager(66): Config changed: { scale=1.0 imsi=310/260 loc=en_US touch=3 keys=2/1/2 nav=3/1 orien=1 layout=34} 07-08 17:24:49.275: DEBUG/(3221): Surface is being destroyed 07-08 17:24:49.285: DEBUG/(3221): Thread was shut down cleanly 07-08 17:24:49.694: DEBUG/ddm-heap(3228): Got feature list request 07-08 17:24:49.754: WARN/IInputConnectionWrapper(3221): showStatusIcon on inactive InputConnection 07-08 17:24:51.315: DEBUG/dalvikvm(66): GC freed 2325 objects / 114696 bytes in 122ms 07-08 17:24:58.234: INFO/ActivityManager(66): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.android.hitmanassault/.HitmanTitle } 07-08 17:24:58.284: INFO/WindowManager(66): Setting rotation to 1, animFlags=0 07-08 17:24:58.354: INFO/ActivityManager(66): Config changed: { scale=1.0 imsi=310/260 loc=en_US touch=3 keys=2/1/2 nav=3/1 orien=2 layout=34} 07-08 17:24:58.554: DEBUG/(3221): Enemies Spawed 07-08 17:24:58.945: WARN/IInputConnectionWrapper(144): showStatusIcon on inactive InputConnection 07-08 17:25:00.604: DEBUG/dalvikvm(66): GC freed 1403 objects / 71832 bytes in 103ms 

Clase de actividad:

@Override public boolean onCreateOptionsMenu (Menú de menú) {MenuInflater inflater = getMenuInflater (); Inflater.inflate (menú Menú, menú); Devuelve verdadero; }

 @Override public boolean onOptionsItemSelected(MenuItem item){ switch(item.getItemId()){ case R.id.menu_restart: startActivity(new Intent(this, Hitman.class)); return true; case R.id.menu_scores: startActivity(new Intent(this, HitmanScores.class)); return true; case R.id.menu_help: startActivity(new Intent(this, HitmanHelp.class)); return true; default: return super.onOptionsItemSelected(item); } } /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(new CanvasSurfaceView(this)); Log.d(TAG, "View added"); } 

¿La rotación de la pantalla hace que se actualice (en el emulador: CTRL + F12)? Si es así, tienes que anular onResume () en tu actividad y hacer que reinicie lo que sea que hayas configurado y que no se esté llamando. Podría ser que sólo tiene que llamar a view.invalidate() de la actividad onResume ()? No muestra código de su actividad, así que no estoy seguro.

En el código que vi, deberías usar this.postInvalidate() (igual que invalidate() pero para de un thread diferente) en lugar de this.onDraw(canvas) y hacer que llame a this.onDraw() por sí solo en la interfaz de usuario Hilo, a diferencia de en su hilo.

¿Dónde inicializar el hilo? Trate de hacerlo en surfaceCreated () en lugar de la surfaceView consturctor (que es donde creo que lo hizo ..)

 public void surfaceCreated(SurfaceHolder holder) { // Restart draw thread Thread.State state = thread.getState(); if(state == Thread.State.TERMINATED) thread = new MyThread(getHolder(), getContext()); thread.setRunning(true); thread.start(); } 
  • Cómo utilizar la interfaz para comunicarse entre dos actividades
  • Directorio de verificación de archivos zip de Java
  • Android, ¿puedo poner AsyncTask en una clase separada y tener una devolución de llamada?
  • Cómo utilizar Berkeley DB SQL API en Android
  • Cómo acceder a com.android.internal.telephony.CallManager?
  • El método más rápido y eficiente para buscar los 3 primeros números?
  • Imagen de Android se desvanece animación
  • Cómo escribir un archivo en Android a la carpeta en bruto?
  • Android HttpPost: cómo obtener el resultado
  • Java comprobar si la fecha es el primer domingo del mes
  • Android: java.net.DatagramSocket.bind: Excepción de argumento no válido
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.