Таймер обратного отсчета при начале активности

как управлять обратным отсчетом, чтобы начать сразу с начала действия и начать новое действие, когда время истекло? заранее спасибо

Редактирует: Активность содержит кнопку. Пользователь должен нажимать ее до тех пор, пока не истечет время, иначе начнется другое действие.


person user3158610    schedule 11.02.2014    source источник
comment
Я не понимаю такие вопросы ... мне кажется, вы описали решение вопроса   -  person gunar    schedule 11.02.2014
comment
ты про заставку?   -  person user3291365    schedule 11.02.2014
comment
@ user3291365, а не заставка   -  person user3158610    schedule 11.02.2014


Ответы (3)


Вы можете добиться этого двумя способами

СПОСОБ 1. Создание потока и установка времени перехода в спящий режим сразу после перенаправления на главный экран приложения. СПОСОБ 2: установите время для обработчика и вызовите Handler().postDelayed , он будет вызывать метод запуска runnable после установки времени и перенаправления на главный экран приложения.

мы можем реализовать таким образом, когда мы можем написать код для нашего 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 может быть следующим

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

    }
}

для другого примера посетите http://www.androidhive.info/2013/07/how-to-implement-android-splash-screen-2/

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

person Jitesh Upadhyay    schedule 11.02.2014
comment
Классное решение, очень просто! Но есть ли способ вывести на экран таймер (связанный с потоком)? - person user3158610; 11.02.2014
comment
да, сделайте что-нибудь таким образом, чтобы вы могли обновить какой-нибудь виджет или текстовое представление, это зависит от вашей реализации!! - person Jitesh Upadhyay; 11.02.2014
comment
Есть ли способ остановить или прервать обработчик из метода 2, если я перешел к другому действию с помощью специальной кнопки? Я добавил кнопку, которая запускает другое действие, если она не нажата, обработчик делает это, но если я использовал кнопку, обработчик продолжает работать, как это исправить? Спасибо! - person user3158610; 26.02.2014
comment
да, сделайте что-нибудь вроде этого handler.removeMessages(what); или mHandler.removeCallbacksAndMessages(HandleUpdateInd.class); посетите stackoverflow.com/questions/5038038/how-to -остановить-обработчик - person Jitesh Upadhyay; 26.02.2014

попробуйте этот код

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();
person Swapnil    schedule 11.02.2014

Это ответ, который вы ищете для 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());
    }

}
person Shakeeb Ayaz    schedule 11.02.2014