【问题标题】:How to display an activity automatically after 5 seconds?如何在 5 秒后自动显示活动?
【发布时间】:2011-06-10 08:47:50
【问题描述】:

在我的应用程序中,我在 Android 中创建了一个启动屏幕类型的东西。它应该保持 5 秒。

我的问题是如何在 5 秒后自动显示另一个活动?

初始屏幕没有按钮,而是应该在 5 秒后自动显示另一个活动,而无需单击按钮。

【问题讨论】:

    标签: android timer splash-screen


    【解决方案1】:
    new Handler().postDelayed(new Runnable() {
                @Override
                public void run() {
                    final Intent mainIntent = new Intent(LaunchActivity.this, HomeActivity.class);
                    LaunchActivity.this.startActivity(mainIntent);
                    LaunchActivity.this.finish();
                }
            }, 5000);
    

    【讨论】:

    • @paiNie 如果用户按下后退按钮,我应该如何暂停计时器并在用户导航回活动时恢复计时器?
    • 我只想添加: if (!LaunchActivity.this.isFinishing()) { LaunchActivity.this.startActivity(mainIntent); LaunchActivity.this.finish(); }
    【解决方案2】:
    TimerTask task = new TimerTask() {
    
                @Override
                public void run() {
                    Intent intent = new Intent(SplashScreen.this, MainMenu.class);
                    startActivity(intent);
                    finishscreen();
                }
            };
            Timer t = new Timer();
            t.schedule(task, 5000);
    

    private void finishscreen() {
            this.finish();
        }
    

    【讨论】:

      【解决方案3】:

      您可以在此处使用thread
      例如

      // thread for displaying the SplashScreen
              Thread splashTread = new Thread() {
                  @Override
                  public void run() {
                      try {
                          int waited = 0;
                          while(_active && (waited < _splashTime)) {
                              sleep(500);
                              if(_active) {
                                  waited += 500;
                              }
                          }
                      } catch(InterruptedException e) {
                          // do nothing
                      } finally {
                          finish();
                          // start your activity here using startActivity
                          stop();
                      }
                  }
              };
              splashTread.start();
      

      【讨论】:

        【解决方案4】:

        这也可以使用 android CountDownTimer 类来完成。

        请参阅此示例以了解 5seconds 延迟。

        new CountDownTimer(5000, 1000) {
            public void onFinish() {
                 Intent startActivity = new Intent(ThisActivity.this,ActivityToStart.class);
                 startActivity(startActivity);
                finish();
            }
        
            public void onTick(long millisUntilFinished) {
            }
        
        }.start();
        

        您可能还需要在AndroidManifest.xml 文件中定义您的父活动,

        <activity
              android:name=".ActivityToStart"
              android:label="Back"
              android:parentActivityName=".MainActivity" >
        
              <!-- Parent activity meta-data to support 4.0 and lower -->
              <meta-data
                   android:name="android.support.PARENT_ACTIVITY"
                   android:value=".MainActivity" />
        </activity>
        

        【讨论】:

          猜你喜欢
          • 2015-05-16
          • 2018-09-05
          • 1970-01-01
          • 2019-08-23
          • 2013-04-20
          • 1970-01-01
          • 1970-01-01
          • 2013-05-25
          • 1970-01-01
          相关资源
          最近更新 更多