【问题标题】:Android timer notification across application activities跨应用程序活动的 Android 计时器通知
【发布时间】:2014-04-05 03:58:38
【问题描述】:

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

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

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

我已经试过了:

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

我还有什么选择?

编辑:

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

【问题讨论】:

  • 啊,所以你是在图书馆项目中这样做的?如果您无权访问活动,则很难显示对话框。这就是通知的用途,真的。
  • 是的,它确实是一个库,我可以触发通知并以编程方式打开它吗?如果可以,怎么做?

标签: android timer popup


【解决方案1】:

将您的计时器实现为singleton

然后,实现observer 模式:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-25
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多