splash なサンプル

Android tutorial : how to make a basic splash screen にて以下が例示されてました。

public class SplashScreen extends Activity {
	//how long until we go to the next 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 5 sec
	            		wait(_splashTime);
	            	}
	            } catch(InterruptedException e) {}
	            finally {
	                finish();
	                //start a new activity
	                Intent i = new Intent();
	                i.setClass(sPlashScreen, Main.class);
	        		startActivity(i);
	                stop();
	            }
	        }
	    };
	    splashTread.start();
	}
	//Function that will handle the touch
	@Override
	public boolean onTouchEvent(MotionEvent event) {
	    if (event.getAction() == MotionEvent.ACTION_DOWN) {
	    	synchronized(splashTread){
	    		splashTread.notifyAll();
	    	}
	    }
	    return true;
	}
}

一瞬 5 秒 wait しちゃダメぢゃん、って思ったら ui Thread ではなかったorz