【问题标题】:Android: Getting an already started TimerAndroid:获取已经启动的计时器
【发布时间】:2011-10-13 01:38:54
【问题描述】:

我有一个启动固定速率计时器的活动。重新打开活动后如何检查计时器当前是否正在运行?

timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
    public void run()
    {
         startService(new Intent(getBaseContext(), GetClassInfoService.class));
    }
}, 0, Integer.parseInt(updateTime)*60*1000);
editor.putString("timerState", "on");

我已尝试设置共享首选项,并且在所有情况下都有效,除非应用程序完全关闭,完全关闭计时器(如果用户强制关闭或重新启动设备)。共享偏好将保持“开启”。简单地在 onDestroy 中更改它是行不通的,因为我希望即使应用程序关闭(但计时器仍处于开启状态),计时器也能继续关闭。

有没有更好的方法来检查计时器?或者可能是一种知道计时器何时被强制关闭或重启的方法?

【问题讨论】:

    标签: java android timer


    【解决方案1】:

    startService方法调用的Service依赖于它所包含的Activity。
    为什么不使用 bindService 方法?

    【讨论】:

      【解决方案2】:

      老实说,我需要更多代码来为您提供明智的意见,但根据您提供的内容,我想说您希望将计时器逻辑移至服务中。通过调用startService,服务将继续运行,直到您调用stopService。然后您的计时器可以在服务内无限期地继续运行,而不必担心被停止(除非用户强制关闭您的服务)。

      根据您需要与GetClassInfoService.class 通信的内容,您可以使用基于 IntentService 的类似邮箱的系统,也可以使用更强大的服务绑定方法。两者都被描述为here.

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多