最近开发ServerMonitor时,遇到一个有趣的情况,在一个方法体内调用了finish方法之后,后续代码依旧得到执行,这有点不符合我对finish方法的认知,原来的观点是:只要是调用了finish方法,该activity就会被立即移除,且不能再被重现出来
于是写了一个demo,做了一些测试,最终结果是,在onCreate()方法内调用finish()方法,
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
this.finish();
testFinish1();
}
执行结果是 testFinish1() 得到执行 onDestory() 得到执行
在onResume()方法内以及一些UI操作内调用finish()方法,
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_test1:
this.finish();
testFinish2();
break;
default:
break;
}
}
执行结果是 testFinish2() 得到执行 onPause() onStop() onDestroy() 得到执行
总结:在activity的生命周期内调用finish()方法后,会先完成当前方法体内的所有代码,然后在根据activity的生命周期调用onDestory(),或onPause() onStop() onDestory()等方法移出当前activity