【问题标题】:How to put some delay in calling an activity from another activity?如何延迟从另一个活动调用一个活动?
【发布时间】:2011-11-01 11:01:52
【问题描述】:

我有一个应用程序,我在其中收到一条包含他位置的短信。收到短信后,它会调用另一个活动来启动并将该位置传递给该活动以将其绘制在地图上。在调用第二个活动之前,它会显示一个像屏幕上的通知一样吐司,但是由于调用第二个活动而导致吐司没有出现。我的问题是我们如何才能延迟从该活动中调用第二个活动?

【问题讨论】:

    标签: android google-maps android-activity gps


    【解决方案1】:

    你可以这样使用:

     new Handler().postDelayed(new Runnable() {
                          @Override
                          public void run() {
    
                              Intent i=new Intent(SearxhJobs.this,JobsTypes.class);
                              startActivity(i);
                          }
                      }, 5000);
    

    在这里它等待最多 5 秒以启动活动。

    希望对你有帮助

    【讨论】:

    • 现在更好的是使可运行文件成为 lambda。
    【解决方案2】:

    您可以像这样使用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
    

    【讨论】:

      【解决方案3】:

      在 doInBackground() 方法中创建一个执行 Thread.sleep() 的 AsyncClass,然后在 onPostExecute() 方法中导航到您的新活动。

      调用您的 toast 消息,然后执行 AsyncClass。

      【讨论】:

        【解决方案4】:

        对于 Kotlin

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

        【讨论】:

        • 缩短Handler().postDelayed({ startActivity(Intent(this, MainActivity::class.java)) }, 3000)
        【解决方案5】:

        试试:

        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
        

        【讨论】:

          【解决方案6】:

          只需设置布局!

           new Handler().postDelayed(new Runnable() {
                  @Override
                  public void run() {
          
                      setContentView(R.layout.next); //where <next> is you target activity :)
          
                      }
                  }, 5000);
          

          【讨论】:

          • 错误的解决方案。 5 秒后,活动可能不再存在,也可能会重新创建。例如,由于方向改变。
          【解决方案7】:

          一个例子如下:

          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);
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2011-10-20
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多