web-dev-qa-db-ja.com

別のアクティビティからのアクティビティの呼び出しを遅らせる方法は?

彼の位置を含むSMSを受信して​​いるアプリケーションがあります.SMSを受信すると、別のアクティビティを呼び出して開始し、その位置をそのアクティビティに渡してマップ上にプロットします.2番目のアクティビティを呼び出す前に、通知のようなトーストを表示します画面には表示されますが、トーストが表示されない2番目のアクティビティの呼び出しが原因で、何らかの問題があります。私の質問は、このアクティビティから2番目のアクティビティの呼び出しを遅らせるにはどうすればよいですか。

16
dark_shadow

次のようなものを使用できます。

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

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

ここでは、アクティビティの起動に最大5秒待機します。

それが役に立てば幸い

52
Udaykiran

あなたはこのように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
7
Mats Hofman

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

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

3
NotACleverMan

Kotlinの場合

 Handler().postDelayed({
            val i = Intent(this, MainActivity::class.Java)
            startActivity(i)
        }, 5000)
2
kuzdu

試してください:

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
1
Hasan A Yousef

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

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);
0
Nick B

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

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

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

            }
        }, 5000);
0
Mubi Ali