Android之Application的onTerminate不能监听应用退出

Android开发者常误以为onTerminate()在App退出时回调,但官方文档揭示它只在模拟器环境中触发,真实设备上不会回调。因此,在真机设备上,onTerminate()并非有效的退出回调函数,开发者不应依赖其在应用结束时执行任何代码。
摘要由CSDN通过智能技术生成

一些Android开发者在不经意间发现Android的Application中有一个公开的回调方法: onTerminate() 继而想当然的认为该方法即是Android的整个App应用退出后的回调,因为Terminate的词面意思就是结束,终结嘛。那么onTerminate在Android的App全部结束后回调,真的是这样的吗? 答案是:是这样,也不是这样。是这样是因为onTerminate()会在Android的模拟器上触发回调。说它不是这样,是因为onTerminate()不会在Android真实的机器设备上触发。

先看Android官方对于onTerminate函数的文档解释:

/**
 * This method is for use in emulated process environments.  It will
 * never be called on a production Android device, where processes are
 * removed by simply killing them; no user code (including this callback)
 * is executed when doing so.
 */
@CallSuper
public void onTerminate() {
}

真相大白了,这段文档明确的解释说,Android中Application的onTerminate()函数只是用来在Android设备的模拟器中,如果application退出才会回调。但是,在产品级(即运行在Android真机设备)应用App,不会再整个App退出时候回调这个onTerminate()函数。然而试想,又有谁会开发一个App目标运行设备仅仅是模拟器而不是真机呢?开发一个App肯定是打算运行在真实的Android设备上的啊,所以,在真实的Android机器上跑,application的onTerminate()就是一个废物,不会被触发,也就是无效的回调函数。开发者不要错误的使用onTerminate(),想当然的认为在Android真机设备上,onTerminate()会在App应用退出时候回调和触发。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值