Dans mon application, il existe une méthode d'obtention de données via l'API. Il est effectué dans IntentService. Les données reçues sont écrites dans la base de données. J'ai réécrit cette méthode avec l'aide du rxjava, mais le temps d'exécution a considérablement augmenté. Voici mon code dans IntentServiceAndroid mon code rxjava fonctionne lentement
Call<List<DocLine>> DocLineResult = mApi.getDocLine(UserID, LastUserDate);
Response<List<DocLine>> responseDocLine = DocLineResult.execute();
if (responseDocLine.isSuccessful()) {
List<DocLine> docLines = responseDocLine.body();
if (docLines != null) {
for (DocLine item : docLines) {
mContents = new ContentValues();
//filling mContents from item
dbBase.insertWithOnConflict(dbTabName, null, mContents, SQLiteDatabase.CONFLICT_REPLACE);
}
Log.d(AppGlobal.LOG_TAG, dbTabName + " => " + docLines.size());
}
}
else {
if (responseDocHead.raw() != null && responseDocHead.raw().code() == 404) {
throw new Exception(getString(R.string.error_null_user));
else
throw new Exception("Error");
}
}
Voici mon code rxjava
Observable oDocLine = apiService.getDocLine(userId, lastSyncDate)
.flatMap(Observable::from)
.flatMap(docLine -> Observable.create(subscriber -> {workDB.save(docLine, null); subscriber.onCompleted();})
.subscribeOn(Schedulers.io()));
ne pas mélanger pascalcase et camelcase pour la dénomination variable. Il rend votre code impossible à lire –
merci pour la critique – user1854307
c'est constructif, essayez de suivre les conventions de nommage java –