Я настраиваю OneTimeWorkRequest с ограничением - " setRequiresCharging ", но этот рабочий запрос не вызывает метод doWork, когда я переключаю состояние батареи на зарядку от разрядки.
Эта проблема существует на эмуляторе и прекрасно работает на моем реальном устройстве, поэтому я думаю, что она может работать не на всех устройствах.
public class MainActivity extends AppCompatActivity {
WorkManager mWorkManager;
public static final String TAG="MainActivityTag";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mWorkManager = WorkManager.getInstance();
setupWorkRequest();
}
private void setupWorkRequest() {
Log.d(TAG, "setupWorkRequest: " + "setting request");
// Create charging constraint
Constraints constraints = new Constraints.Builder()
.setRequiresCharging(true)
.build();
OneTimeWorkRequest chargerListen = new OneTimeWorkRequest
.Builder(ChargerListener.class)
.setConstraints(constraints)
.build();
mWorkManager.enqueue(chargerListen);
}
}
public class ChargerListener extends Worker {
private static final String TAG = "ChargerListenerTag";
public ChargerListenerWork(Context context, WorkerParameters workerParams){
super(context, workerParams);
}
@NonNull
@Override
public Result doWork() {
Log.d(TAG, "doWork: "+"Charger Connected");
// do some work when connected
return Result.success();
}
}
В logcat я ожидаю, что зарядное устройство подключено, оно работает на моем устройстве Samsung, но не работает на эмуляторе Android.