你的位置:首页 > 操作系统

[操作系统]手机影音1


/** * 1.设置被启动的Activity为单例模式 */public class SplashActivity extends Activity {  /**   * 是否已经启动主页面   */  private boolean isStartMain = false;  private static final String TAG = SplashActivity.class.getSimpleName();  private Handler handler = new Handler();  @Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_splash);    handler.postDelayed(new Runnable() {      @Override      public void run() {        //这个方法执行是在主线程        Log.e(TAG, "当前线程的名称:" + Thread.currentThread().getName());        startMainActivity();      }    }, 3000);  }  /**   * 启动主页面   */  private void startMainActivity() {    if(!isStartMain){      isStartMain = true;      Intent intent = new Intent(this,MainActivity.class);      startActivity(intent);      finish();//关闭当前页面    }  }  @Override  protected void onDestroy() {//    isStartMain = true;     handler.removeCallbacksAndMessages(null);//把消息队列里面的所有回调和消息移除     super.onDestroy();  }  @Override  public boolean onTouchEvent(MotionEvent event) {    startMainActivity();    return super.onTouchEvent(event);  }} 

1.Handler在哪个线程new,Runnable就在哪个线程执行  

 

2.有一个bug,启动了多次Activity,如何解决?

 方法①.设置为启动的Activity只能是单例。
  在功能清单文件android:launchMode="singleTask"
 方法②.从源头上控制,执行代码只一次

private boolean isStartMain = false;/** * 跳转到主页面,并且把当前页面关闭掉 */private void startMainActivity() {	if(!isStartMain){		isStartMain = true;		Intent intent = new Intent(this,MainActivity.class);		startActivity(intent);		//关闭当前页面		finish();	}}