2011-11-01 26 views
10

Tengo una aplicación en la que estoy recibiendo un sms que contiene su ubicación. Al recibir sms, llama a otra actividad para iniciar y pasa esa ubicación a esa actividad para trazarla en el mapa. Antes de llamar a la segunda actividad, muestra un brindis como la notificación en la pantalla, pero en algunos casos, debido a que llamamos a una segunda actividad, no aparece el brindis. Mi pregunta es ¿cómo podemos retrasar la llamada de la segunda actividad de esta actividad?¿Cómo poner algo de retraso en llamar una actividad de otra actividad?

Respuesta

39

Puede usar algo como esto:

new Handler().postDelayed(new Runnable() { 
         @Override 
         public void run() { 

          Intent i=new Intent(SearxhJobs.this,JobsTypes.class); 
          startActivity(i); 
         } 
        }, 5000); 

Aquí Espera hasta que 5 segundos para iniciar actividad.

Espero que ayude

2

Haga una AsyncClass que haga Thread.sleep() en el método doInBackground(), luego navegue a su nueva actividad en el método onPostExecute().

Llame a su mensaje de brindis y luego ejecute AsyncClass.

5

Puede hacerlo con un Handler como esto

Handler h = new Handler(){ 
     @Override 
     public void handleMessage(Message msg) { 

      Intent i = new Intent().setClass(ctx, MainActivity.class);     
      startActivity(i); 
     }   
    }; 

    h.sendEmptyMessageDelayed(0, 1500); // 1500 is time in miliseconds 
0

¡Simplemente configure!

new Handler().postDelayed(new Runnable() { 
     @Override 
     public void run() { 

      setContentView(R.layout.next); //where <next> is you target activity :) 

      } 
     }, 5000); 
1

Probar:

Runnable r = new Runnable() { 
     @Override 
     public void run() { 
      // if you are redirecting from a fragment then use getActivity() as the context. 
      startActivity(new Intent(SplashActivity.this, MainActivity.class)); 
      // To close the CurrentActitity, r.g. SpalshActivity 
      finish(); 
     } 
}; 

Handler h = new Handler(); 
// The Runnable will be executed after the given delay time 
h.postDelayed(r, 1500); // will be delayed for 1.5 seconds 
0

Un ejemplo sería el siguiente:

Handler TimeDelay=new Handler(); 
       if(previous=="geofence"){ 



        tts.speak(previous,TextToSpeech.QUEUE_ADD,null, null); 
        Runnable r = new Runnable() { 
         @Override 
         public void run() { 
          /* 
          Intent intent = new Intent(
            MyBroadcastMessageReceiver.class.getName()); 
          intent.putExtra("some additional data", choice); 
          someActivity.sendBroadcast(intent);*/ 
          tts.speak(previous,TextToSpeech.QUEUE_ADD,null, null); 
         } 
        }; 
        TimeDelay.postDelayed(r, 150000); 
Cuestiones relacionadas