2014-02-11 41 views
0

如何管理倒计时,以便在活动开始时立即开始并在时间到了时开始新的活动?在此先感谢CountDown计时器开始活动

编辑: 活动包含一个按钮。用户应该按它,直到时间到了,否则另一个活动开始

+1

我不明白这些o f的问题...对我来说,似乎你已经描述了从 – gunar

+0

这个问题的解决方案你在谈论闪屏? – user3291365

+0

@ user3291365,不是Splach屏幕 – user3158610

回答

0

可以达到这个答案有两种方法

方法1:创建一个线程并设置在重定向到主应用程序屏幕之后准备好睡眠时间。 方法2:设置处理程序的时间并调用Handler()。postDelayed,在设置时间和重定向到主应用程序屏幕后,它会勉强调用runnable的run方法。

我们在这个给定的方式实现wher我们可以为我们的MainScreen编写代码

import android.os.Bundle; 
import android.os.Handler; 
import android.app.Activity; 
import android.content.Intent; 
import android.view.Menu; 

public class MainScreen extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.mainscreen); 

// METHOD 1  

     /****** Create Thread that will sleep for 10 seconds *************/   
     Thread background = new Thread() { 
      public void run() { 

       try { 
        // Thread will sleep for 10 seconds 
        sleep(10*1000); 

        // After 10 seconds redirect to another intent 
        Intent i=new Intent(getBaseContext(),AnotherScreen .class); 
        startActivity(i); 

        //Remove activity 
        finish(); 

       } catch (Exception e) { 

       } 
      } 
     }; 

     // start thread 
     background.start(); 

//METHOD 2 

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

      // Using handler with postDelayed called runnable run method 

      @Override 
      public void run() { 
       Intent i = new Intent(MainScreen.this, AnotherScreen.class); 
       startActivity(i); 

       // close this activity 
       finish(); 
      } 
     }, 10*1000); // wait for 10 seconds 
     */ 
    } 

    @Override 
    protected void onDestroy() { 

     super.onDestroy(); 

    }} 

的AnotherScreen代码可以是另一个例子访问http://www.androidhive.info/2013/07/how-to-implement-android-splash-screen-2/

如下

import android.app.Activity; 
import android.os.Bundle; 

public class AnotherScreen extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.anotherScreen); 

    } 

    @Override 
    protected void onDestroy() { 

     super.onDestroy(); 

    } 
} 

https://codereview.stackexchange.com/questions/31295/review-request-android-countdowntimer-activity

+0

很酷的解决方案,非常简单!但是有什么办法可以在屏幕上显示一个定时器(与线程连接)吗? – user3158610

+0

是这样做,你可以更新一些小部件或textview,这取决于你的实施! –

+0

如果我使用特殊按钮移动到另一个活动,是否有任何方法可以停止或中断处理方法2中的处理程序?我添加了一个按钮,启动另一个活动,如果它没有点击然后处理程序做,但如果我使用按钮,然后处理程序继续工作,如何解决它?谢谢! – user3158610

2

试试这个代码

new CountDownTimer(30000, 1000) { 

    public void onTick(long millisUntilFinished) { 
     mTextField.setText("seconds remaining: " + millisUntilFinished/1000); 
    } 

    public void onFinish() { 
     mTextField.setText("done!"); 
     //start new activity 
    } 
    }.start(); 
0

这是你正在寻找一个spalshActivity

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_splash_screen); 
    try { 
     TimerTask timerTask = new TimerTask() { 

      @Override 
      public void run() { 
       Intent i = new Intent(SplashScreen.this, 
         MainActivity.class); 
       startActivity(i); 
       finish(); 

      } 
     }; 
     Timer timer = new Timer(); 
     timer.schedule(timerTask, 300);// DElay of 300 mil sec 
    } catch (Exception e) { 

     Log.e("ERROR in Splash Screen", e.toString()); 
    } 

}