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

Android中Looper#prepareMainLooper()已废弃,方案A与B该选哪一个?

选方案B,绝对不能用A!

直接给结论:必须选择方案B,方案A存在严重错误。

具体原因:

  • 从API Level 30(Android 11)开始,主线程的Looper已经由系统自动完成初始化,开发者完全不需要手动调用任何Looper初始化相关方法。
  • 方案A中else分支调用的Looper.prepare()是专门用于子线程初始化Looper的API,在主线程中调用该方法会直接抛出RuntimeException——因为主线程的Looper早已存在,重复调用prepare()是不被允许的。
  • 方案B的逻辑完全符合官方废弃说明的要求:仅在API Level 30以下的版本中调用prepareMainLooper()完成主线程Looper初始化,API Level 30及以上版本无需做任何额外操作,依赖系统自动初始化即可。

额外提醒:如果是在子线程中需要使用Looper,无论哪个API版本都应该调用Looper.prepare()(后续记得配合Looper.loop()启动消息循环),但这和主线程的prepareMainLooper()场景完全不同,不要混淆。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 00:23:24