2017-07-17 5 views
-2

私は現在、ユーザー指定の間隔(5分、10分...)でWebサーバーからデータを取得するアンドロイドアプリを開発中です。私はAlarmManagerとWakeLockを使用しています。アラームは、5〜10分おきに期待どおりに消えます。インターネット接続は、睡眠中は動作していないようです。ほとんどの人は私がWifiLockを使用することを提案しています。私が間違っていても、Wi-FiがWiFiを生きたままにするためにのみ使用されていないのであれば私を訂正してください。 3G-4Gモバイルデータはどうですか? WifiLockはその接続を維持していますか?睡眠中にインターネットを使用する - Androidサービス

+1

あなたがサービスを使用してみたことがありますか?サービスは独立して動作し、アプリケーションが閉じていても実行できます。 – UmarZaii

+0

これは私の問題とは関係ありません。私のコードは期待通りに実行されます。しかし私はインターネットにアクセスできない。私はファイルをダウンロードしようとしますが、それは動作しません。 –

+0

電話がスリープモードになっていてもインターネットを有効にする方法については、こちらをご覧ください。[link](https://stackoverflow.com/questions/11926640/turn-on-the-internet-on-android-when- – UmarZaii

答えて

0

新しいドーズモードのためにAndroid 6から起動すると、デバイスはウェイクロックでもスリープ状態になりますが無視されます。

デバイスがスリープ状態になるのを避ける方法は、着信不可能な通知でフォアグラウンドサービスを開始することです。

+0

「デバイスが睡眠に入るのを避ける方法」 しかし、私は睡眠を避けたいとは思わない。私は睡眠中に自分のコードを実行したい。どちらはすでにやっている。睡眠中にWi-Fi /ネットワークがシャットダウンするため、インターネットにアクセスできません。 –

+0

ブロードキャストレシーバにデータ転送を行うフォアグラウンドサービスを開始させることはできますか?これは、フォアグラウンドサービスが終了した後にスリープ状態に戻る可能性のあるデバイスをスリープ状態にしますか? –

+0

スリープ中は電話機が完全に停止し、cpuは実行を停止し、Brodacast Receiverがアラームを処理すると、cpuはonReceiveが復帰するまでアクティブになります。 –

0

デバイスがDozeモードのときにネットワークにアクセスすることはできません。 Webサービスから通知やアップデートを受信したい場合は、Firebase Cloud Messagingを使用するか、次回起動するまでネットワークコールを延期してください。あなたはここにドーズの制限に関する詳細情報を確認できます。

https://developer.android.com/training/monitoring-device-state/doze-standby.html#restrictions

また、あなたは電話がDozeモードであるかどうかを確認する方法について興味がある場合:

https://developer.android.com/reference/android/os/PowerManager.html#isDeviceIdleMode()

+0

私はフォアグラウンドサービスの実装も試みた。 "onCreate"メソッドでは、wakelockとwifilockを発行します。デバイスがスリープ状態になると、すべてのネットワーク要求のmy app(フォアグラウンドサービス)がタイムアウトになります。また、<6.0デバイスでアプリケーションを実行しようとしましたが、これはまだ発生します。だから私はDozeモードとは関係がないと信じています。 –

+0

マニフェストとこのhttpコールを行うために使用しているサービスを投稿してください。また、ウェークロックを保持してリクエストを実行しようとしましたか? –