【发布时间】:2019-05-14 12:34:31
【问题描述】:
我正在使用约束设置 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 中,我希望充电器已连接,它适用于我的三星设备,但不适用于 android 模拟器。
【问题讨论】:
-
对我来说同样的问题,它不适用于模拟器,以及任何搭载 Android 10 或 11 的真实设备,包括 Pixel 4。在模拟器上,它似乎在充电水平时开始工作变化超过 90%。这并不是“setRequiresCharging”函数所承诺的。
标签: java android android-emulator android-workmanager