Я создал IntentService следующим образом:
`
protected void onHandleIntent(@Nullable Intent intent) {
Realm.init(this);
realm = Realm.getDefaultInstance();
List<DbModel> list = new ArrayList<>();
RealmResults<DbModel> users =
realm.where(DbModel.class).equalTo("Status", false)
.findAll();
list.addAll(users);
for (int i = 0; i < list.size(); i++)
sendMeterReading(list.get(i));
}
private void sendMeterReading(DbModel dbModel) {
propertyid = dbModel.getPropertyId();
MeterReadingModel meterReadingModel = new MeterReadingModel();
MeterReadingBuilder mobileDeviceRegBuilder = new MeterReadingBuilder()
.setAmrModuleSerial(dbModel.getAmrModuleSerial())
.setPropertyId(dbModel.getPropertyId()
meterReadingModel.getMeterDeviceModel().add(mobileDeviceRegBuilder
.createMobileDeviceReg());
RestClient.getInstance(this).get().sendReading(meterReadingModel).enqueue(this);
}
public void onResponse(@NonNull Call<CommonResponse> call, @NonNull Response<CommonResponse> response) {
if (response.body().getStatusCode() == Constants.SUCCESS_CODE) {
Realm.init(this);
realm = Realm.getDefaultInstance();
DbModel dbModel = realm.where(DbModel.class).equalTo("propertyId",
propertyid).findFirst();
realm.beginTransaction();
dbModel.setUpdateStatus(true);
realm.insertOrUpdate(dbModel);
realm.commitTransaction();
}
}
`
В приведенном выше коде я использую базу данных областей, в которой есть несколько записей, я беру несколько записей и нажимаю API по одной, используя модификацию, и использую службу намерений, когда я получаю успешный результат, затем я обновляю свой DB. Вот моя проблема, когда я вызываю службу намерений. он ударил только одну запись, но я пропускаю несколько записей .
Я вызываю этот сервис из метода onResume Activity. Поэтому, когда деятельность возобновляется, эта служба называется:
@Override
protected void onResume() {
super.onResume();
Intent updateService = new Intent(HomeActivity.this, UpdateService.class);
startService(UpdateService);
}