2016-01-18 2 views
1

Я использую библиотеку RxAndroid для обработки списка элементов с использованием шаблона подписчика/наблюдаемого. Моя проблема заключается в том, что при обработке элемента есть индикатор выполнения, который необходимо обновить. Но после обработки 16 элементов кажется, что наблюдаемый не вызывает методNext до тех пор, пока остальные элементы (90) не будут обработаны, а затем вызовет 90 раз по методу Next. Почему это происходит? может ли это быть проблемой памяти?Наблюдаемый, кажется, не вызывает onNext через некоторое время

Код ниже.

Subscriber:

public void startSingleRecognition(int id, int position) { 
    mAdapter.updateItemProgress(0, position); 
    Uri imageUri = Uri.parse(getHpCard(id).getUrlImage()); 
    final int[] i = {0}; 
    mSubscription = mRecognitionUtils 
      .getRecognitionObservable(imageUri, configurations) 
      .subscribeOn(Schedulers.io()) 
      .observeOn(AndroidSchedulers.mainThread()) 
      .subscribe(
        abbyResult -> mAdapter.updateItemProgress(++i[0], position), 
        e -> e.printStackTrace(), 
        () -> mAdapter.updateItemProgress(-1, position)); 

} 

Observable:

public Observable<AbbyResult> getRecognitionObservable(Uri imageUri, 
     ArrayList<Configuration> configurations) { 
    return Observable.from(configurations) 
      .flatMap(
        configuration -> Observable.just(recognize(imageUri, configuration, this))); 
} 

Метод распознавать делает жесткие обработки фотографий работы, моя первая мысль была, что этот метод потребляет много памяти и наблюдаемые не может доставить обработанного элемента, до тех пор, пока все вызовы методов не будут выполнены. Но я не уверен, может ли кто-нибудь подтвердить это?

Спасибо!

ответ