【发布时间】: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,但我看到您的问题的方式,它不需要继续运行。您可以在手机再次开机时分辨出时差并正确更新标签。