0

我有一个包含多个活动的应用程序,并且我有一个在呈现的第一个活动中启动的计时器。问题是这样的:

当我当前的活动可能与我启动计时器的活动不同时,当计时器关闭时,如何获得对当前活动的引用。

我真正想要的是有一个计时器遍历我所有的活动,当它到期时显示一个警报对话框并做一些事情。但由于 android 的工作方式,这似乎是不可能的。有没有人有替代方案?

我已经尝试过:

  • 使用异步任务访问 ui 线程,如果它不是在主 ui 线程中创建的,则不起作用。
  • 不能使用处理程序,我的计时器在另一个类中

我还有什么选择?

编辑:

  • 我不能更改任何活动代码,当有人将它插入项目时,计时器应该足够解耦以发挥作用。
  • 从计时器工作线程获取当前活动的实例应该可以工作,因为它可以让我在 ui 线程中运行东西。
4

1 回答 1

0

将您的计时器实现为单例

然后,实现一个观察者模式:

创建一个接口(可能称为 AlertListener),由您希望被提醒的每个 Activity 实现。这个接口应该有一个方法,比如 onTimerExpired()。当计时器到期时,此方法应该对活动执行任何需要执行的操作。

在您的计时器类中,还要维护对当前 AlertListener 的引用和一个名为“setCurrentActivity(AlertListener currentActivity)”之类的方法。

在每个活动的 onResume 或其他方法中,调用 MyTimer.setCurrentActivity(this)。

当计时器关闭时,调用 currentActivity.onTimerExpired()。

于 2013-08-27T20:29:23.610 回答