屏幕关闭时的 Android "slows down"

标签 android service

我正在开发一款每 30 秒向互联网发布一次的应用程序。一切正常,直到屏幕熄灭。计时器似乎变慢了。发布需要大约 5 分钟。我已经尝试获取唤醒锁和 setforegroundactivity 但没有任何效果。这里有什么想法吗?

它作为服务运行,我用它来唤醒锁:

PowerManager mgr = (PowerManager)this.getSystemService(Context.POWER_SERVICE);
WakeLock wakeLock = mgr.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyWakeLock");
wakeLock.acquire();

这里的例子设置前景:http://developer.android.com/reference/android/app/Service.html

我也尝试使用调试器检查它能做什么,但连接 USB 后一切正常。

更多细节: 为了定期检查,我使用这个:

Private void startCheck() {
mCheckHandler.sleep(30000);
}

    private CheckHandler mCheckHandler = new CheckHandler(); 
     private class CheckHandler extends Handler {  
            @Override  
            public void handleMessage(Message msg) {  
                Pservice.this.startCheck();
            }  

            public void sleep(long delayMillis) {  
              this.removeMessages(0);  
              sendMessageDelayed(obtainMessage(0), delayMillis);  
            }  
          };  

我将其设置为每次检查互联网时都获取唤醒锁。现在它工作正常 :) 感谢您的所有帮助 :)

最佳答案

当屏幕关闭时,设备最终将进入低功耗状态。这种低功耗状态基本上意味着您的代码不会被执行。需要 5 分钟的原因是因为其他一些应用程序正在唤醒设备,然后您的应用程序有机会再次运行。

通过 USB 连接设备,可以防止出现低功耗状态。

听起来你的唤醒锁实际上并没有被获取或者释放得太快了。

关于屏幕关闭时的 Android "slows down",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7471650/

相关文章:

javascript - 在 Node 中设置日期时间/计时器

android - 我尝试在 sdk 23 中通过 aidl 使用 'bindService' Intent 隐式调用远程服务,但它总是返回空对象引用

ubuntu - 使节点应用程序成为服务的正确方法

windows - 在 Windows 2012 的 LocalSystem 帐户上运行 Internet Explorer

android - 切片签名与android studio默认运行不一致

android - 刷新时如何恢复 (sherlock) ListView 中的负载指示器?

Android:WebView - 在 WebView 中打开某些 URL,其余的在外部打开?

javascript - 通过 HTTPS 从 Javascript 调用 WCF 服务导致访问被拒绝

android - 如何使用 Android 获取 AWS Device Farm 测试的代码覆盖率?

android - Xamarin,火力地堡 : "Default FirebaseApp is not initialized in this process" - though initializeApp() is called?