2011-11-01 17 views
10

Mam aplikację, w której otrzymuję wiadomość SMS zawierającą jego lokalizację. Podczas odbierania wiadomości SMS wywołuje ona inną czynność, aby rozpocząć i przekazuje tę lokalizację do tej aktywności, aby narysować ją na mapie.Przed wywołaniem drugiej czynności wyświetla toast jak powiadomienie na ekranie, ale z powodu wywołania drugiej czynności, że toast nie pojawia się.Miałem pytanie, jak możemy opóźnić wywołanie drugiego działania z tego działania?Jak opóźnić wywołanie działania z innej aktywności?

Odpowiedz

39

Można użyć czegoś takiego:

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

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

Tutaj czeka zapisu do 5 sekund na uruchomienie działalności.

Mam nadzieję, że pomoże

2

Utwórz AsyncClass, który wykonuje Thread.sleep() w metodzie doInBackground(), a następnie przejdź do nowej aktywności w swojej metodzie onPostExecute().

Zadzwoń do swojego toastu, a następnie uruchom AsyncClass.

5

Można to zrobić z Handler tak

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

Wystarczy ustawić układ!

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

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

      } 
     }, 5000); 
1

Spróbuj:

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

Przykładem może być następujący:

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); 
Powiązane problemy