我想知道在安卓上是否有可能处理/检测带有延迟的可运行回调函数(postDelayed
方法)?
例如,我的应用程序中有一个或多个闪屏界面(使用handler.postDelayed(new Runnable()...
运行),该应用程序是为测试目的创建的。在这个应用程序中,我也有一个库(我正在创建并在应用程序中使用它),以及一些可在IntentService
类上运行的类。
有时,当应用程序正在运行那些测试目的
的splashscreen
活动时,我正在创建的库可能会自动在UI中弹出一些活动。
但问题是:如果那些活动出现在一个splashscreen
活动上,并且splashscreen
被销毁了,那些自动弹出的活动也会被销毁,并在日志记录器中记录一个"leaked window"消息。
- 自动出现在UI中的那些活动不应该自动关闭,这是被禁止的。需要用户交互才能关闭该活动并返回到应用程序的正常行为。
- 而且,库不知道应用程序的UI任何信息。
因此,我的问题是(相对于我正在创建的库端,没有关于应用程序UI流程的信息):
- 有没有办法检测到在应用程序中相对于库端创建了一些postDelayed方法?如果可以,该如何处理这个问题?
P.S.:请注意,通常我在显示那些自动弹出活动的情况下使用对话框。
UPDATE
图表的解释:
目前我有一个案例,一个Splashscreen正在被执行。
这个类继承了IntentService类,已经从互联网接收到了请求,这将启动一个Activity。
同时,当闪屏界面在postdelayed
时,另一个Activity已经被创建并显示在UI中。当X秒钟过去并且另一个Activity没有被销毁时,下一个Activity将被创建并自动销毁另一个Activity。这样做时,安卓会报"leaked window"的错误信息与Activity相关。
OnStop
肯定会被调用。如果有泄漏对象存在,OnDestroy
可能会在此之后的半小时甚至永远都不会被调用。 - rupps