【问题标题】:Runnable stops on screen lock屏幕锁定时可运行停止
【发布时间】:2015-09-28 06:25:14
【问题描述】:

我在 Android 服务中有一个 Runnable,该服务绑定到一个活动。

问题是当屏幕被锁定时,runnable 会暂停。它在屏幕解锁后恢复。

以下是可运行的代码 -

private Runnable counterRunnable = new Runnable() {
        @Override
        public void run() {

            totalTime = SystemClock.uptimeMillis() - lngStartTime;
            totalTime += lngPauseTime;
            strMillis = String.valueOf(((Integer.valueOf(String.valueOf(totalTime))) / 10) % 60);
            strSecs = String.valueOf(((Integer.valueOf(String.valueOf(totalTime))) / 1000) % 60);
            strMins = String.valueOf((((Integer.valueOf(String.valueOf(totalTime))) / 1000) / 60) % 60);
            strHrs = String.valueOf(((((Integer.valueOf(String.valueOf(totalTime))) / 1000) / 60) / 60) % 60);

            if(strMillis.length() == 1)
                strMillis = "0" + strMillis;
            if(strSecs.length() == 1)
                strSecs = "0" + strSecs;
            if(strMins.length() == 1)
                strMins = "0" + strMins;
            if(strHrs.length() == 1)
                strHrs = "0" + strHrs;

            Log.i(TAG, strHrs + ":" + strMins + ":" + strSecs + ":" + strMillis);
            hndlrUpdateTime.postDelayed(this, 10);
        }
    }; 

我想知道屏幕暂停时runnable 暂停的原因。

【问题讨论】:

  • 我猜安卓操作系统正在扼杀它。您可能希望使用带有可见通知的服务,以便 android 不会杀死它。
  • 现在来看看它。如果我启动的所有应用程序在我的手机进入深度睡眠后继续运行,会发生什么?你会发现你的电池不会持续很长时间,所以这是故意的。您可以请求部分唤醒外观或只是扩展 WakefulIntentService,但我看到您的问题的方式,它不需要继续运行。您可以在手机再次开机时分辨出时差并正确更新标签。

标签: java android


【解决方案1】:

您的 runnable 已附加到创建它的进程。

当您锁定屏幕时,进程会停止。

欲了解更多信息,请查看this

如果您想避免它,请查看this

希望这会有所帮助。

【讨论】:

    【解决方案2】:

    当屏幕锁定时,这是 android 应用程序应该工作的方式

      onPause() 
    

    被调用,尝试覆盖此方法并将其留空,但请注意这可能会解决您的问题并创建 100 多个。

    【讨论】:

      猜你喜欢
      • 2021-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-20
      • 1970-01-01
      • 1970-01-01
      • 2013-08-29
      相关资源
      最近更新 更多