はいといいえ。
このJobInfo.Builder.setRequiredNetworkType()
方法を使用すると、特定のネットワーク条件が満たされたときにジョブを実行するようにスケジュールできます。
ネットワーク タイプは、次の 3 つの値のいずれかになります。
JobInfo.NETWORK_TYPE_NONE
: ネットワーク接続は必要ありません。
JobInfo.NETWORK_TYPE_UNMETERED
: 定額制のWiFiまたはイーサネット接続。
JobInfo.NETWORK_TYPE_ANY
: 任意のネットワーク接続 (WiFi またはセルラー)。
さて、問題は... NETWORK_TYPE_CELLUAR がありません。アプリがセルラーのみの場合にのみウェイクアップすることはできません。(なぜそれをしたいのですか?)
もう 1 つのキャッチは... WiFi 接続は従量制または非従量制です。従量制接続は通常、モバイル ホットスポットのようなものであり、これは自動的に検出されるか (ホットスポットが送信できる特別な DHCP オプションがあります)、またはユーザーが WiFi 設定からネットワークごとに手動で切り替えることができます。
そうです、JobScheduler ジョブにネットワーク タイプの制約を設定できます。ただし、いいえ、求めているレベルの粒度は得られません。
@CommonsWareが述べたように、正当な理由がない限り、通常、ネットワーク接続が計測されていないときにネットワーク関連のジョブが発生するようにスケジュールするという考えです。setRequiresCharging(true)
(バッテリーを節約するために、AC 電源が使用可能になるまでジョブを延期することもお勧めします。)