关于Activity的finish方法
public class HelloActivity extends Activity { ProgressDialog dlg = null; Handler mHandler = new Handler(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); dlg = new ProgressDialog(this); dlg.show(); //HelloActivity.this.finish();//---------------1 会立刻调用onDestory(); //java.lang.IllegalArgumentException: View not attached to window manager mHandler.postDelayed(new Runnable() { @Override public void run() { HelloActivity.this.finish();//-----2 dlg.cancel(); //WindowManager.removeview(HelloActivity, dlg); } }, 1000); setContentView(R.layout.hello_activity); } @Override public void onDestroy(){ super.onDestroy(); Log.d("yzy","activity....finish....."); } }? 如果在1的位置finish.会报异常 view not attach to the windowmanager,这个很好理解。
? 如果在2的位置finish不会有任何问题,而且调用onDestory();
?
疑惑中........................................难道finish是个耗时操作,是个异步操作?
于是我2 的下面加了一行SystemClock.sleep(1000); 可是 第二种情况dlg.cancel()还是不报错?
?
真心不懂了!