2016-12-19 6 views
0

私は、サーバーに数秒ごとにいくつかのデータを送信するサービスを開始すると、デバイスは、1つのために触れていない場合、私はwakeLockとwifiLock

wakeLock

PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE); 
    wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyWakelockTag"); 
    wakeLock.acquire(); 

とwifiLock

WifiManager wMgr = (WifiManager) getSystemService(Context.WIFI_SERVICE); 
    wifiLock = wMgr.createWifiLock(WifiManager.WIFI_MODE_FULL, "MyWifiLock"); 
    wifiLock.acquire(); 

を取得しかし、スリープモードでは無線LANの動作が停止します。これは正常な動作ですか、そうでない場合、release()メソッドが呼び出されるまで、デバイスをロックするにはどうすればよいですか?

答えて

3

バッテリーの性能を最適化するためにAndroidを使用しないでおくと、Androidがデバイスをオフにするため、通常の動作です。

まず、デバイスのバッテリ性能を向上させるために、ドーズオフモードにするデバイスを停止させないことを強くお勧めします。洞窟の詳細については、official documentationをご覧ください。

何らかの理由でサービスを有効にする必要がある場合は、おそらくREQUEST_IGNORE_BATTERY_OPTIMIZATIONS権限をアプリに追加してみてください。しかし、あなたのアプリが(そこに公開されることになっている場合)、Googleは公式ドキュメントhereから以下の引用に基づいてストアを再生するから拒否されるかもしれませんことをご承知おき:

注:Google Playのポリシーがアプリケーションを禁止しますアプリの中核機能が悪影響を受けていない限り、Android 6.0+(DozeおよびApp Standby)のパワーマネージメント機能からの直接免除を要求することはできません。

関連する問題