¿Cómo puedo repetir este temporizador de cuenta regresiva de una manera específica ...?

En el juego sale un número aleatorio (loadG1) y se muestra durante 4 segundos. Una vez transcurridos los cuatro segundos, desaparece y el usuario debe ingresar su valor para ganar un punto. Una vez que el usuario presiona Enter, su cuadro de entrada desaparece y el programa debe esperar hasta que el CountDownTimer más largo (actualmente 18 segundos) haya terminado para ver su puntaje. Hasta ahora, solo pueden anotar un punto. Lo que quiero que suceda es que los contenidos del temporizador de cuenta regresiva de 4 segundos se repitan una vez que ingresan una respuesta (ya sea correcta o no). Aunque, quiero que loadG1 también se envíe cuando el temporizador de cuenta regresiva comience nuevamente. Entonces ingresan una respuesta, se muestra una nueva carga aleatoria G1 durante otros 4 segundos, luego desaparece, ingresan otra respuesta, etc., hasta que finaliza el temporizador más largo. ¿Cómo haría para hacer esto? Soy consciente de que los bucles no funcionan, como lo intenté y simplemente bloqueó mi aplicación. Estaría muy agradecido si alguien pudiera ayudarme a hacer esto y mostrarme cómo implementar el código. NOTA: Soy nuevo en el aprendizaje de desarrolladores de Java y Android. Muchas gracias de antemano.

Aquí está el código:

public class game1 extends AppCompatActivity {

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


final Button loseStarter1;

    loseStarter1 = (Button) findViewById(R.id.Starter1);
    loseStarter1.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            loseStarter1.setVisibility(View.GONE);

            final int[] score = {0};
            Random generateG1 = new Random();
            final int loadG1 = generateG1.nextInt(1000000)+10000;
            final TextView number = (TextView) findViewById(R.id.number);
            number.setText(" "+loadG1);

            new CountDownTimer(18000, 1000) {
                @Override
                public void onTick (long millisUntilFinished) {
                }
                public void onFinish() {
                    TextView result = (TextView) findViewById(R.id.outcome);
                    result.setText("Score: "+ score[0]);
                    TextView prompt = (TextView) findViewById(R.id.prompt);
                    prompt.setVisibility(View.GONE);
                }
            }.start();


                    new CountDownTimer(4000, 1000) {

                        @Override
                        public void onTick(long millisUntilFinished) {

                        }

                        @Override
                        public void onFinish() {
                            number.setVisibility(View.GONE);
                            final TextView prompt = (TextView) findViewById(R.id.prompt);
                            prompt.setText(" Enter the number");
                            final EditText input = (EditText) findViewById(R.id.enterAnswer);
                            input.setVisibility(View.VISIBLE);
                            input.setOnKeyListener(new View.OnKeyListener() {
                                @Override
                                public boolean onKey(View v, int keyCode, KeyEvent event) {
                                    if (event.getAction() == KeyEvent.ACTION_DOWN) {
                                        switch (keyCode) {
                                            case KeyEvent.KEYCODE_ENTER:
                                                Editable answer = input.getText();
                                                int finalAnswer = Integer.parseInt(String.valueOf(answer));
                                                int finalLoadG1 = Integer.parseInt(String.valueOf(loadG1));
                                                input.setVisibility(View.GONE);
                                                prompt.setVisibility(View.GONE);
                                                if (finalAnswer == finalLoadG1) {
                                                    score[0]++;
                                                }

                                                return true;
                                            default:
                                        }
                                    }
                                    return false;
                                }
                            });
                        }
                    }.start();

            };
        });
    }

}

Respuestas a la pregunta(1)

Su respuesta a la pregunta