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

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

一些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应用退出时候回调和触发。

猜你喜欢

转载自blog.csdn.net/zhangphil/article/details/81232302