调用finish方法的activity后续执行过程

本文通过实验探讨了在Android开发中使用finish()方法的行为特点。实验证明,在Activity的生命周期中调用finish()方法后,当前方法内的剩余代码仍然会被执行,随后按生命周期顺序触发onPause()、onStop()及onDestroy()等回调。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近开发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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值