#java #android
Здравствуйте. Хочу в приложении сделать что-то вроде заставки. Пользователь заходит в приложение, ему открывается первая Activity, и через 5 секунд бросает на другое. Делаю так: int ii = 0; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.fon); try { TimeUnit.SECONDS.sleep(5); ii = 5; } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println(ii); if (ii == 5) { Intent intent2 = new Intent(this, Web.class); startActivity(intent2); } } И получается в результате следующее: Пользователь заходит в приложение, ему видно первое Activity и через 5 секунд открывается другое активити. Но проблема в том что на первом активити ему не видно экрана, то есть не работает setContentView(R.layout.fon); Что я делаю не так? Буду благодарен за помощь!
Ответы
Ответ 1
Вы приостановили главный поток строкой TimeUnit.SECONDS.sleep(5); Так у вас вообще должно было вылететь по ANR Останавливать главный поток не надо. Это плохая практика. Вам надо сделать иначе - запустить отложенную задачу один из множества способов, например, так: Thread thread = new Thread() { @Override public void run() { try { TimeUnit.SECONDS.sleep(5); Intent intent2 = new Intent(ТУТ_ИМЯ_КЛАССА_АКТИВИТИ.this, Web.class); startActivity(intent2); } catch (InterruptedException e) { e.printStackTrace(); } } }; thread.start();Ответ 2
Запускаете в onCreate() Handler handler = new Handler(); handler.postDelayed(new Runnable() { @Override public void run() { Intent intent = new Intent(FirstActivity.this, SecondActivity.class); startActivity(intent); finish(); } }, 2000);//Ставите сколько сек, 1000 = 1с.
Комментариев нет:
Отправить комментарий