2016-04-10 4 views
0

Я пишу приложение для Android, это позволяет кому-то добавить два номера и ввести ответ. но я хочу, чтобы эти цифры отображались всего 5 секунд, а затем появлялся новый номер, если они вводят правильный или неправильный ответ, сбрасывают таймер и отображают новые номера. Я написал код, который делает случайные числа и другие просто утра таймер не в состоянии сделать кто-то помочь, пожалуйстаКак закрыть окно/активность через определенное время

+0

Посмотрите на класс CountDownTimer – scana

ответ

0

Вы можете использовать android.os.Handler класс сделать так, Как

private Handler handler = new Handler(); // Create Handler

Runnable runnable = new Runnable() { 
    @Override 
    public void run() { 
     // Perform action here... 
    }   
}; 
handler.postDelayed(runnable, 3 * 1000); // action will be performed after 3 seconds. 
+0

Должен ли я добавить этот код в класс onCreate? –

+0

Извините, но, по крайней мере, вы должны подумать об этом. – Wizard

0
CountDownTimer timer = new CountDownTimer(30000/*modify value as per need*/, 1000) { 

    public void onTick(long millisUntilFinished) { 
     //millisUntilFinised is the remaining time 
    } 

    public void onFinish() { 
     //timer finished .Do what you need to do next here 
    } 
    }; 

используйте timer.start();, где вам нужно было запустить таймер.

+0

Где я могу поместить этот код? –

+0

объявить глобальный таймер, как указано выше, и использовать timer.start(), когда вам нужно было начать обратный отсчет –

+0

Это не сработало, как ожидалось .... если я помещу то, что я хочу, чтобы он делал в onthick, он повторяет d код для 3sec, если я поместил его в onfinish, он ждет 3 секунды, прежде чем показывать мой код .... я хочу, чтобы таймер выполнял определенный код через 3 секунды и не дождался 3 секунд, чтобы сделать код ... можете ли вы помочь меня, пожалуйста, –

1

Использование Handler и Runnable должно работать на вас, но не использовать анонимный runnable, поскольку они могут вызвать утечку памяти. Вместо этого добавьте runnable в статический класс и используйте removeCallbacks в onDestroy.

Также вы можете использовать WeakReference в onDestroy не гарантируется называться так WeakReference позволит GC, чтобы освободить память, если ваша деятельность убивают

public class BarActivity extends AppCompatActivity { 

    private Handler mHandler; 
    private FooRunnable mRunnable; 

    private void finishActivityAfterDelay(int milliSeconds) { 
     mHandler = new Handler(); 
     mRunnable = new FooRunnable(this); 
     mHandler.postDelayed(mRunnable, 5000); // 5 seconds 
    } 

    @Override 
    protected void onDestroy() { 
     mHandler.removeCallbacks(mRunnable); 
     super.onDestroy(); 
    } 

    private static class FooRunnable implements Runnable { 
     private WeakReference<AppCompatActivity> mWeakActivity; 

     public FooRunnable(AppCompatActivity activity) { 
      mWeakActivity = new WeakReference<>(activity); 
     } 

     @Override 
     public void run() { 
      AppCompatActivity activity = mWeakActivity.get(); 
      if (activity != null) activity.finish(); 
     } 

    } 

} 
+0

Я этого не понимаю –

+0

Какую часть вы не понимаете? – Sourabh

Смежные вопросы