Я все еще изучаю RxJava, я знаю, что такое Observable & Observers, но все еще не знаю, как, где и когда использовать фильтр, карту, плоскую карту и т. Д.
Есть ли у вас какие-либо хорошие советы, какпреобразовать этот код в RxJava?
void locationChanged(LocationResult locationResult) {
for (Location location : locationResult.getLocations()) {
Double lat = location.getLatitude();
Double lng = location.getLongitude();
boolean isMock;
if (Build.VERSION.SDK_INT >= 18) {
isMock = location.isFromMockProvider();
} else {
isMock = !Settings.Secure.getString(getContentResolver(), Settings.Secure.ALLOW_MOCK_LOCATION).equals("0");
}
for (int k = 0; k < offices.size(); k++) {
Office office = offices.get(k);
Double d_lat = Double.valueOf(office.getOc_lat());
Double d_long = Double.valueOf(office.getOc_long());
Double d_radius = Double.valueOf(office.getOc_radius());
Location.distanceBetween(lat, lng, d_lat, d_long, resultApi);
String s_distanceToOffice = String.valueOf(resultApi[0]);
Double d_distanceToOffice = Double.parseDouble(s_distanceToOffice);
//Log.e(TAG, "locationChanged: Distance -> " + d_distanceToOffice);
// check-in in radius
if (d_distanceToOffice < d_radius) {
buttonOutOfRadius.setVisibility(View.GONE);
progressBarPosition.setVisibility(View.GONE);
buttonRecord.setVisibility(View.VISIBLE);
// checking fake gps
if (isMock) {
processTheMock();
} else {
in_area = "Y";
site_name = office.getOc_site();
site_id = office.getOc_id();
site_lat = office.getOc_lat();
site_long = office.getOc_long();
processNoMock(lat, lng, site_name);
}
stopLocationUpdates();
break;
}
else if (d_distanceToOffice > d_radius) {
progressBarPosition.setVisibility(View.GONE);
buttonOutOfRadius.setVisibility(View.VISIBLE);
buttonRecord.setVisibility(View.GONE);
}
}
}
stopLocationUpdates();
}
Какой код необходимо изменить и не нужно менять?Что я сделал следующим образом:
Observable.fromIterable(offices)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe()
мне нужно просто скопировать и вставить код внутри цикла "for (..) в" oNext (Office office) "?
Этоприятно узнать из вашего опыта.