如何在不使用常规活动生命周期事件的情况下检测/拦截应用程序生命周期事件

Posted

技术标签:

【中文标题】如何在不使用常规活动生命周期事件的情况下检测/拦截应用程序生命周期事件【英文标题】:How to detect/intercept application life cycle events without using the conventional activity life cycle events 【发布时间】:2013-09-18 04:32:41 【问题描述】:

我想知道是否有任何合法的方法可以从后台服务/线程获取有关活动/应用程序生命周期事件的信息。 实际上,我有一个库项目,我想在其中拦截这些调用,以便在使用我的库的应用程序进入后台或再次出现时处理场景。

这个问题的出现是因为我的库默认不提供任何活动,它实习生返回视图对象,以便应用程序开发人员可以在他们的活动中使用相同的对象。

所以我无法访问活动生命周期回调。

一种可能的方法是:

我为应用程序开发人员创建的每个活动注册了一个侦听器,并且需要从应用程序开发人员的 onResume 和 onPause() 调用侦听器回调,通过这种方式,我可以让这个回调被后台拦截服务,因此我将能够控制 onResume 、 onPause 等中的应用程序行为。

我想知道有没有其他有效/更好的方法来处理这个用例。

谢谢

【问题讨论】:

【参考方案1】:

有一种方法可以确定您的项目中是否正确使用了 Activity 生命周期。

在 4.X android 版本设备中,您可以在设置中看到“开发者设置”。在开发者设置中,您必须启用“不保留活动”,它会尽快销毁后台的所有活动。

在这种情况下,您的应用 Activity 不应崩溃,如果它崩溃,您的 Activity 不会遵循 Android Activity 生命周期。

这里是链接供您参考:http://developer.android.com/training/basics/activity-lifecycle/index.html

我希望,这可以帮助你一点点。 :)

【讨论】:

它不是在测试/开发时我想在实际应用程序的运行时进行拦截。

以上是关于如何在不使用常规活动生命周期事件的情况下检测/拦截应用程序生命周期事件的主要内容,如果未能解决你的问题,请参考以下文章

在 Jersey 生命周期中如何拦截请求?

如何让自定义视图观察包含片段的生命周期事件而不是活动?

在不调用析构函数的情况下结束 STL 容器的生命周期

重学SpringBoot系列之生命周期内的拦截过滤与监听

在不存在的片段上调用片段生命周期和 onCreate 的问题

Android应用程序/进程的生命周期?