You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Activity的onCreate()方法中调用finish()会发生什么?

在Activity的onCreate()中调用finish()的行为解析

我来给你一步步拆解这个问题:

1. 调用finish()后会触发的生命周期流程

当你在onCreate()方法里调用finish()时,Activity的生命周期会跳出正常的执行链路:

  • 正常流程:onCreate() → onStart() → onResume()
  • 调用finish()后的流程:onCreate() → onStart() → onPause() → onStop() → onDestroy()

简单说,系统会在onCreate()执行完毕后,直接启动Activity的销毁流程,不会走到让界面处于可交互的onResume()阶段。

2. Activity会不会显示后再关闭?

绝大多数情况下,用户完全看不到这个Activity的界面。
因为Activity的视图绘制、渲染到屏幕上的操作,是在onResume()之后才真正完成的。而调用finish()后,系统还没等到界面渲染完成,就开始销毁Activity了。除非你的onCreate()里做了非常耗时的操作(比如同步网络请求),导致系统有足够时间渲染界面,但这种情况在正规开发里几乎不会出现,恶意软件也不会这么干——毕竟耗时操作会暴露痕迹。

关于恶意软件的利用思路

这种方式确实曾经被恶意软件用来做“隐形启动”:

  • 虽然Activity很快被销毁,但onCreate()方法里的代码会完整执行。恶意软件可以在这里悄悄启动后台服务、窃取设备信息、加载恶意模块等,而用户完全察觉不到有Activity启动过。
    不过现在Android的安全机制已经做了很多限制:比如Android 10及以上版本,后台启动Activity需要特殊权限,而且系统会对这类行为进行检测和拦截;另外,应用商店的审核也会扫描这类可疑代码,所以这种手法的有效性已经大打折扣了。

内容的提问来源于stack exchange,提问作者Eduardo Brito

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:58:58