在时间间隔之后从一个活动切换到另一个活动

时间:2014-08-25 09:44:09

标签: android

我正在创建一个新的Android应用程序

我希望在一段时间后从一个活动切换到另一个活动,我该怎么做?

请指导我

3 个答案:

答案 0 :(得分:1)

new Handler().postDelayed(new Runnable() {

            @Override
            public void run() {
                // This method will be executed once the timer is over
                // Start your app Next activity
                Intent i = new Intent(CurrentActivity.this, NextActivity.class);
                startActivity(i);

                // close this activity
                finish();
            }
        }, TIME_OUT);

答案 1 :(得分:0)

有很多方法可以做到这一点。

您可以使用postDelayed(),但不建议这样做,因为您不能停止它,或者在活动生命周期的各个阶段之间可靠地控制它,以防止例如当时的奇怪行为用户在延迟过期之前退出活动。

你需要一些锁或其他机制。

最恰当的方法是在第一个活动onPostResume()上启动计时器,这将在一段延迟后启动另一个活动。

TimerTask mStartActivityTask;
final Handler mHandler = new Handler();
Timer mTimer = new Timer();

@Override
private protected onPostResume() { // You can also use onResume() if you like

    mStartActivityTask = new TimerTask() {
            public void run() {
                    mHandler.post(new Runnable() {
                            public void run() {
                                startNewActivity(new Intent(MyClass.class));
                        }
               });
        }};

    // This will start the task with 10 seconds delay with no intervals.
    mTimer.schedule(mStartActivityTask, 100000, 0); 
 }

 private void startNewActivity(Intent i) {

     mTimer.cancel();             // To prevent multiple invocations
     startActivity(i);            // Start new activity
     // finish();                 // Optional, depending if you want to return here.

 }

答案 2 :(得分:0)

试试此代码

        private Thread thread;
        @Override
        public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);
        thread = new Thread(this);
        thread.start();
        }

        @Override
        public void run() {
            try {
                    Thread.sleep(3000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                    Intent userName = new Intent(this, UserNameActivity.class);
                    startActivity(userName);
        }