音乐流媒体,谷歌开发者控制台警告:挂部分唤醒锁

时间:2018-03-07 12:47:38

标签: android streaming wakelock foreground-service

我已经为Android制作了一个在线时钟收音机,它还具有一个集成的音乐播放器作为带有通知的前台服务,它有自己的唤醒锁 - 当服务启动时获取并在用户按下“停止”时释放完成服务。

现在,我在Google Developer Console中收到有关为此应用挂起部分唤醒锁的警告。接收此警告是完全正确的,因为如果有人长时间听音乐,那么只要需要保持音乐在屏幕上播放的时候,wakelocks(wifi管理员和电源管理器)也会被保留关了。

该应用程序完美运行,并在屏幕关闭和/或省电模式下播放数小时 - 完全符合预期。

此外: In Developer Guidelines and best practices他们说:

  

如果必须使用部分唤醒锁,请遵循以下建议:

     

确保您应用的某些部分仍然在前台。对于   例如,如果您需要运行服务,请启动前台服务   代替。这可以直观地向用户显示您的应用仍然是   运行

     

确保获取和释放唤醒锁的逻辑尽可能简单。当唤醒锁定逻辑与复杂状态相关联时   机器,超时,执行器池和/或回调事件,任何微妙的   该逻辑中的错误可能导致唤醒锁定持续时间超过   预期。这些错误很难诊断和调试。

我想我已经照顾好了。

他们在开发控制台告诉我警告出现的地方:

  

请注意,对于某些应用,需要更长的唤醒锁才能启用音乐流等关键功能。

由于我认为一切都很好,但由于“不良行为”的警告仍然显示,我想得到建议。

问题是:

  1. 我可以做些什么来避免收到此警告吗?
  2. 我是否不得不担心谷歌因我的应用程序显示“不良行为”而“惩罚”,尽管它运作正常?
  3. 流媒体服务(部分)代码:

        @Override
            public void onCreate() {
    
                ...
    
            // WAKE LOCK && WIFI LOCK
                powerManager = (PowerManager) getApplicationContext().getSystemService(POWER_SERVICE);
                wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyWakelockTag");
                wakeLock.acquire();
    
                wMgr = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
                wifiLock = wMgr.createWifiLock(WifiManager.WIFI_MODE_FULL, "MyWifiLock");
                wifiLock.acquire();
    
                ...
            // notification gets built
                ...
    
            startForeground(ntfctnId, buildNotification(standardNoti));
    
         @Override
            public int onStartCommand(Intent intent, int flags, int startId) {
    
            // player here...
    
                ...
    
        @Override
            public void onDestroy() {
    
                ...
    
            // RELEASE WAKE LOCK && WIFI LOCK
                wakeLock.release();
                wifiLock.release();
    
                ...
    

1 个答案:

答案 0 :(得分:0)

我没有发现任何负面消息-既不是来自Google,也不来自用户,也没有任何东西或其他任何人。

一切都很好。如果无法避免唤醒锁(音乐应用程序显然就是这种情况),那么您无需担心在开发人员控制台中有与此相关的任何警告。