【问题标题】:android handler thread takes more time when screen is off屏幕关闭时,android处理程序线程需要更多时间
【发布时间】:2015-04-29 10:22:28
【问题描述】:

我写了一个简单的应用程序,它有一个活动和一个服务(在前台运行)。该服务需要做一个周期性的工作,所以我创建一个处理程序,并定期发送处理程序消息。

class ServiceHandler extends Handler {
    public ServiceHandler(Looper looper) {
        super();
    }
    @Override
    public void handleMessage(Message msg) {
        switch (msg.what) {
        case 1:
            // do my job here
            this.sendEmptyMessageDelayed(1, 15000);
        }
    }
}

我认为我的工作应该每 15 秒执行一次,只要我的服务没有被用户杀死,就永远不会结束。

但是当我退出活动时(长按菜单键,扫出活动)并关闭屏幕。我的工作似乎是随机执行的(都长于 15s),有时甚至长于 1 分钟

我认为这可能与android系统电源策略有关。

在这种情况下,我怎样才能让我的工作以固定的时间间隔执行。请帮忙。

【问题讨论】:

    标签: android service foreground


    【解决方案1】:

    当您从最近的活动列表中删除您的活动时,该过程将由 android 框架完成。因此,您的 ServiceHandler 应该停止处理。

    作为一个好的做法,开发者应该在stop添加代码这样的服务处理onDestroy()

    【讨论】:

    • 感谢您的回答,但我的处理程序是在设置为 froeground 优先级的服务中创建的。我希望它在删除主要活动后继续运行,我希望处理程序线程保持循环并定期处理消息。如果我错了,有没有更好的方法来归档我的目标?能否请您给我一些线索谢谢。
    猜你喜欢
    • 1970-01-01
    • 2016-03-21
    • 1970-01-01
    • 1970-01-01
    • 2012-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-07
    相关资源
    最近更新 更多