Выполнить функцию через 5 секунд в Android

Я новичок в разработке Android, и теперь моя активность запуска проявляется всего 5 секунд, после чего я хочу проверить, что пользователь вошел в систему или не выполнил действия.

Вот мой код.

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); exactPreferences = getSharedPreferences("ExactPreference",MODE_PRIVATE); setContentView(R.layout.activity_landing_page); session = exactPreferences.getString(Model.getSingleton().SHARED_SESSION_ID,null); Log.i("Session Id",session); displayData(); // I want to perform this function after 5 seconds. } private void displayData() { if(session.equals("")){ Intent loginIntent = new Intent(LandingPage.this, LoginActivity.class); startActivity(loginIntent); Log.i("User Logged In", "False"); } else { Intent objIntent = new Intent(LandingPage.this, IndexPageActivity.class); startActivity(objIntent); Log.i("User Logged In", "True"); } } 

Вы можете использовать Handler для добавления некоторой задержки. Вызовите метод displayData() как displayData() ниже, чтобы он выполнялся через 5 секунд.

 new Handler().postDelayed(new Runnable() { @Override public void run() { displayData(); } }, 5000); 

Примечание. Не используйте потоки, такие как Thread.sleep(5000); Потому что он заблокирует ваш пользовательский интерфейс и сделает его безответственным.

Назначьте переменную millisDelayTime с миллисекундами, которые вы хотите вызвать задержка. MActivity является объектом Activity для предоставления контекста приложения. В вашем случае millisDelayTime должен быть инициализирован с помощью 5000

 mActivity.runOnUiThread(new Runnable() { @Override public void run() { final Handler handler = new Handler(); handler.postDelayed(new Runnable() { @Override public void run() { //your code here } }, millisDelayTime); } }); 

Попробуйте, создайте код CountDownTimer одним тиком

 timer = new CountDownTimer(5000, 5000) { public void onTick(long millisUntilFinished) { } public void onFinish() { displayData(); } }; timer.start(); 

Лучшим вариантом для этого является использование Handler :

  int TIME = 5000; //5000 ms (5 Seconds) new Handler().postDelayed(new Runnable() { @Override public void run() { function(); //call function! } }, TIME); 

Используйте CountDownTimer

 // There's a TextView txtCount in Main Activity final int secs = 5; new CountDownTimer((secs +1) * 1000, 1000) // Wait 5 secs, tick every 1 sec { @Override public final void onTick(final long millisUntilFinished) { txtCount.setText("" + (int) (millisUntilFinished * .001f)); } @Override public final void onFinish() { txtCount.setText("GO!"); finish(); // Time's up - Start the Login Activity final Intent tnt = new Intent(getApplicationContext(), LoginActivity.class); startActivity(tnt); } }.start();