我正在尝试在 Android>= 4.0 中实现 onAppLeave
/onAppReturn
事件。当用户离开应用(转到另一个应用、按主页等)并返回到应用(即应用被带到前台,而以前不是)时,应该触发这些。目前,我正在跟踪应用程序中所有活动的生命周期调用,根据生命周期调用的顺序确定何时触发事件。在多个设备上进行测试后,似乎同一应用程序中的活动之间的生命周期事件按以下顺序发生:
Time Activity A Activity B
---- ---------- ----------
| onPause
| onStart
| onResume
v onStop
假设这是正确的,
- 当应用中一个活动的
onStop
之前没有来自应用中另一个活动的onResume
时,可以触发onAppLeave
事件。 - 当应用中一个活动中的
onStart
之前没有来自应用中另一个活动的onPause
时,可以触发onAppReturn
事件。
这个逻辑正确吗?是否存在这些假设无效的情况?
根据文档,逻辑是正确的。当用户单击电子邮件、电话、地图等,链接并启动另一个活动(如电话拨号器、Gmail 编辑器或地图)时,可能会出现其他情况。 用户可能会将这些活动视为应用的一部分,但触发 AppLeave 事件的此逻辑不会。