32 lines
1.4 KiB
Java
32 lines
1.4 KiB
Java
package androidx.work.impl.constraints.controllers;
|
|
|
|
import android.content.Context;
|
|
import android.os.Build;
|
|
import androidx.annotation.NonNull;
|
|
import androidx.work.Logger;
|
|
import androidx.work.NetworkType;
|
|
import androidx.work.impl.constraints.NetworkState;
|
|
import androidx.work.impl.constraints.trackers.Trackers;
|
|
import androidx.work.impl.model.WorkSpec;
|
|
import androidx.work.impl.utils.taskexecutor.TaskExecutor;
|
|
public class NetworkMeteredController extends ConstraintController<NetworkState> {
|
|
private static final String TAG = Logger.tagWithPrefix("NetworkMeteredCtrlr");
|
|
|
|
public NetworkMeteredController(Context context, TaskExecutor taskExecutor) {
|
|
super(Trackers.getInstance(context, taskExecutor).getNetworkStateTracker());
|
|
}
|
|
|
|
@Override // androidx.work.impl.constraints.controllers.ConstraintController
|
|
public boolean hasConstraint(@NonNull WorkSpec workSpec) {
|
|
return workSpec.constraints.getRequiredNetworkType() == NetworkType.METERED;
|
|
}
|
|
|
|
public boolean isConstrained(@NonNull NetworkState networkState) {
|
|
if (Build.VERSION.SDK_INT >= 26) {
|
|
return !networkState.isConnected() || !networkState.isMetered();
|
|
}
|
|
Logger.get().debug(TAG, "Metered network constraint is not supported before API 26, only checking for connected state.", new Throwable[0]);
|
|
return !networkState.isConnected();
|
|
}
|
|
}
|