【发布时间】:2018-01-24 09:21:33
【问题描述】:
我想知道我们是否有可能在 android 上处理/检测可运行的回调(postDelayed 方法)?
例如,我的应用程序(用于测试目的的应用程序)上有一个或多个启动画面(使用 handler.postDelayed(new Runnable()... 运行)。在这个应用程序中,我还有一个库(我在应用程序中创建和使用它)和一些可用的类,它们在 IntentService 类上运行。
有时,当应用程序运行那些splashscreen 活动(用于Testing purpose)时,我正在创建的库可能会在 UI 中自动弹出一些活动。
但是,如果这些活动出现在 splashscreen 活动上并且 splashscreen 正在被销毁,那么这些活动(自动弹出)也将被销毁并记录 “泄漏窗口” 消息在 logcat 中。
问题是:
- 那些自动出现在 UI 中的活动不应该 自动关闭,这是禁止的。它需要一个交互 用户关闭该活动并返回应用程序的正常行为。
- 此外,该库对应用程序的 UI 一无所知。
所以我的问题是(相对于我正在创建的库方面,而没有关于 UI 应用程序流程的信息):
- 有没有办法检测是否在应用程序中相对于库端创建了一些 postDelayed 方法?如果是,我该如何处理这个问题?
P.S.:请注意,通常情况下,我正在为自动出现的假设 Activity 使用 Dialog。
更新
图表说明:
现在我有一个 Splashscreen 正在执行的案例。
扩展 IntentService 类的类已收到来自 Internet 的请求,该请求将启动 Activity。
同时启动画面在postdelayed 上,另一个Activity 已创建并显示在 UI 中。当 X 秒过去且另一个 Activity 尚未销毁时,会创建 Next Activity 并自动销毁另一个 Activity。这样做时,Android 会相对于 Activity 抛出“泄漏窗口”消息。
【问题讨论】:
-
你能提供那些runnables和activity的相关代码吗?
-
@YvetteColomb 问题是代码是机密的......所以很遗憾我不能放一些代码......但我认为我的图表会有很大帮助,而且解释也很有帮助。我能做些什么让您更好地理解我的问题?我的解释有什么问题?
-
关于您的问题,我仍然需要了解一件事,如果您的弹出活动是从 IntentService 创建的,我假设 NextActivity 对此一无所知,那么当 NextActivity 破坏您的弹出窗口时活动何时出现?如果上面还有其他活动,您的弹出活动是否会自动完成?
-
@Damiii 我认为您在问题中混合了各种术语,使您的问题过于笼统。如果您将问题分解为更具体、定义明确的问题,这将符合您的最大利益。
-
@Damii 你不能确定。
OnStop肯定会被调用。OnDestroy可能会在此之后被调用,半小时后甚至不会被调用,如果有泄漏的对象。
标签: java android android-activity android-handler android-looper