Sleep () en java (Android)
Estoy siguiendo este tutorial para tener una pantalla de carga en mi programa. El tutorial dice que mi actividad debe Sleep () usando el comando Sleep (), sin embargo, no reconoce Sleep () como una función y me proporciona un error, preguntando si me gustaría crear un método llamado Sleep ().
Aquí hay un enlace al tutorial:
- Configuración de ProGuard para Guava con obfuscación y optimización
- El cuadro de diálogo Progreso muestra pero no muestra la barra de progreso y el mensaje no se actualiza
- Error al invalidar el método toString
- Cómo ordenar una vista de lista en orden alfabético
- ¿En MVP está onClick la responsabilidad de View o Presenter?
Http://androidcookbook.com/Recipe.seam;jsessionid=4DBCC1688B51DB16A2A40A86E135D361?recipeId=1599
Aquí está el ejemplo de código:
public class LoadingScreenActivity extends Activity { //Introduce an delay private final int WAIT_TIME = 2500; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); System.out.println("LoadingScreenActivity screen started"); setContentView(R.layout.loading_screen); findViewById(R.id.mainSpinner1).setVisibility(View.VISIBLE); new Handler().postDelayed(new Runnable(){ @Override public void run() { //Simulating a long running task this.Sleep(1000); System.out.println("Going to Profile Data"); /* Create an Intent that will start the ProfileData-Activity. */ Intent mainIntent = new Intent(LoadingScreenActivity.this,ProfileData.class); LoadingScreenActivity.this.startActivity(mainIntent); LoadingScreenActivity.this.finish(); } }, WAIT_TIME); } }
- Java.lang.IllegalMonitorStateException: objeto no bloqueado por hilo antes de wait ()?
- Tamaño del archivo que obtenemos a través de la función AssetManager getAssets en Android
- Cómo convertir una dirección MAC a un Hex y pasarlo a un bytearray en java
- libGDX + com.google.android.gms: play-services: 7.0.0: android: dexDebug
- Notificar a otra actividad de una preferencia cambiada
- Android - ¿Cómo funciona la carga instantánea de Google+?
- Cómo ejecutar la antigua aplicación java en Android
- ¿Cómo saber si Locale utiliza formato de 12 o 24 horas?
Puede utilizar uno de los siguientes métodos:
Thread.sleep(timeInMills);
o
SystemClock.sleep(timeInMills);
SystemClock.sleep(milliseconds)
es una función de utilidad muy similar a Thread.sleep(milliseconds)
, pero ignora InterruptedException
. Utilice esta función para retrasos si no utiliza Thread.interrupt()
, ya que preservará el estado interrumpido del subproceso.
La función es Thread.sleep(long)
.
Tenga en cuenta, sin embargo, que no debe realizar un sueño en el subproceso de interfaz de usuario.
El código que publicaste es horrible. No utilice eso en un dispositivo real. Obtendrá un error de "aplicación no responde" si ejecuta algo similar a esto.
Si utiliza Handlers, tenga en cuenta que se crea un Handler en el hilo donde se ejecuta . Así que llamar a new Handler().post(...
en el subproceso de interfaz de usuario ejecutará el ejecutables en el subproceso de interfaz de usuario, incluida esta "operación de ejecución larga" .La ventaja es que puede crear un controlador para el subproceso de interfaz de usuario que puede utilizar Posteriormente, como se muestra a continuación.
Para poner la operación de ejecución larga en un subproceso de fondo, debe crear un subproceso alrededor del ejecutable, como se muestra a continuación. Ahora, si desea actualizar la interfaz de usuario una vez que se ha completado la operación de larga ejecución, debe publicarla en el subproceso de interfaz de usuario utilizando un controlador.
Tenga en cuenta que esta funcionalidad es un ajuste perfecto para un AsyncTask
que hará que este aspecto mucho más limpio que el patrón de abajo. Sin embargo, incluyo esto para mostrar cómo se relacionan los manejadores, los subprocesos y los ejecutables.
public class LoadingScreenActivity extends Activity { //Introduce a delay private final int WAIT_TIME = 2500; private Handler uiHandler; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); uiHandler = new Handler(); // anything posted to this handler will run on the UI Thread System.out.println("LoadingScreenActivity screen started"); setContentView(R.layout.loading_screen); findViewById(R.id.mainSpinner1).setVisibility(View.VISIBLE); Runnable onUi = new Runnable() { @Override public void run() { // this will run on the main UI thread Intent mainIntent = new Intent(LoadingScreenActivity.this,ProfileData.class); LoadingScreenActivity.this.startActivity(mainIntent); LoadingScreenActivity.this.finish(); } }; Runnable background = new Runnable() { @Override public void run() { // This is the delay Thread.Sleep( WAIT_TIME ); // This will run on a background thread //Simulating a long running task Thread.Sleep(1000); System.out.println("Going to Profile Data"); uiHandler.post( onUi ); } }; new Thread( background ).start(); }