[TOC]

概述

​ 我们在集成Application的时候发现Android的Application中有一个公开的回调方法:

1
onTerminate()

​ 继而想当然的认为该方法即是Android的整个App应用退出后的回调,因为Terminate的词面意思就是结束,终结嘛。那么onTerminate在Android的App全部结束后回调,真的是这样的吗?

答案是:是这样,也不是这样。是这样是因为onTerminate()会在Android的模拟器上触发回调。说它不是这样,是因为onTerminate()不会在Android真实的机器设备上触发。

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

1
2
3
4
5
6
7
8
9
10
/**
* 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应用退出时候回调和触发。