我正在使用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模拟器上无法实现。