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(); } 
  • Plugin de servicio de fondo de Android en el teléfono
  • Crash con Android 4.1 con ArrayMap
  • No se puede escalar con Drawable con ScaleDrawable
  • ¿Puede alguien ayudarme con Android RemoteControlClient?
  • Android - cómo forzar a que el niño reemplace el método padre que tiene código
  • Facebook "Messenger" tiene un SMS Broadcast Receiver que tiene la máxima prioridad después de reiniciar
  • Eliminando un elemento de String array en android
  • Cámara Android, onPictureTaken (byte imgData, Cámara fotográfica) método & PictureCallback nunca llamado
  • Android: ¿define TextView TextStyle mediante programación?
  • cómo obtener alguna palabra en particular de String en JAVA Android?
  • Java.lang.NullPointerException: Intenta invocar el método virtual 'android.view.View android.app.Activity.findViewById (int)' en una referencia de objeto nulo
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.