Android: Splash Screen повторно открывает приложение на второй странице, даже если приложение закрывается во время заставки - PullRequest
1 голос
/ 20 марта 2012

Хорошо, поэтому я создал очень простой экран-заставку, используя этот учебник:

http://p -xr.com / андроид-учебник-как в изготовлении, а-Basic-заставку /

Проблема в том, что если пользователь нажимает кнопку «Домой» или кнопку «Назад», чтобы выйти из приложения в течение продолжительности заставки, то приложение снова откроется на втором экране после того, как заставка была бы выполнена, если бы пользователь сделал нет выхода.

Мой код в значительной степени похож на учебник. любая помощь?

Спасибо

1 Ответ

2 голосов
/ 20 марта 2012

Я изменил код, чтобы лучше использовать методы жизненного цикла.понравилось менять его.:)

   public class SplashScreen extends Activity {

        protected int _splashTime = 5000; 

        private Thread splashTread;

        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.splash);


            final SplashScreen sPlashScreen = this; 

            // thread for displaying the SplashScreen
            splashTread = new Thread() {
                @Override
                public void run() {
                    try {                   
                        synchronized(this){
                            wait(_splashTime);
                        }

                    } catch(InterruptedException e) {} 
                    finally {

                        if(!isFinishing()) // This pretty useful boolean val tells if 
 //user has pressed the back button. very useful.
                        {Intent i = new Intent(SplashScreen.this, Main.class);

                        startActivity(i);
                         finish();
                         }


                        stop();
                    }
                }
            };

            splashTread.start();
        }
        @Override
        public boolean onTouchEvent(MotionEvent event) {


            if (event.getAction() == MotionEvent.ACTION_DOWN) {
                Toast.makeText(this,"exec---",Toast.LENGTH_LONG).show();
                synchronized(splashTread){
                    splashTread.notifyAll();
                }
            }
            return true;
        }
        @Override
        protected void onPause() {

            super.onPause();

            if(splashTread.getState()==Thread.State.TIMED_WAITING){
                //Thread is still waiting and Activity is paused. Means user has pressed Home. Bail out
                finish();
            }

        }
    }

Моя точка зрения заключается в том, что использование Splash Screen не часто, но, возможно, необходимо.Если вы выполняете тяжелую работу за экраном (например, игры).

...