2011-11-01 18 views
10

私は自分の位置を含むSMSを受信して​​いるアプリケーションを持っています。SMSを受信すると、別のアクティビティが呼び出され、そのアクティビティをそのアクティビティに渡して地図に表示します。2番目のアクティビティを呼び出す前に、トーストが出てこないという第二のアクティビティを呼び出すことによるいくつかのホッホの通知が表示されます。私の質問は、このアクティビティから第二アクティビティの呼び出しをどのように遅らせることができますか?他のアクティビティからアクティビティを呼び出す際に遅延を与える方法はありますか?

答えて

39

でそれを行うことができます。ここではアクティビティを起動するために5秒件まで待つ

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

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

を。

希望する

2

doInBackground()メソッドでThread.sleep()を実行するAsyncClassを作成し、onPostExecute()メソッドで新しいアクティビティに移動します。

トーストメッセージを呼び出し、AsyncClassを実行します。

5

あなたは、あなたがこのようなものを使用することができますHandler

このような
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

レイアウトを設定するだけです!

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

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

      } 
     }, 5000); 
1

試してみてください。

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

例では、次のようになります:

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); 
関連する問題