2016-11-09 12 views
0

私は現在、アダプタを更新するために私のアプリでrxandroidを実装しようとしています。 唯一の問題は、adapter.notiyDataSetChanged()を呼び出すと、メソッドが終了するまでアプリがフリーズすることです。新しいスレッドでサブスクライバを実行するrxandroid

これは私がこれまで何をやったかである:...

private Subscriber<? super Object> subscriber = new Subscriber<Object>() { 

    @Override 
    public void onCompleted() { 

    } 

    @Override 
    public void onError(Throwable e) { 

    } 

    @Override 
    public void onNext(Object o) { 

      adapter.notifyDataSetChanged(); 


     } 
    } 
}; 

、その後、私はonPause内部onResume

@Override 
public void onResume() { 
    super.onResume(); 
    MObservable.getInstance().getObservable() 
      .delay(2000,TimeUnit.MILLISECONDS,Schedulers.trampoline()) 
      .subscribeOn(Schedulers.newThread()) 
      .observeOn(AndroidSchedulers.mainThread()) 
      .subscribe(subscriber); 
} 

と退会の内側にサブスクライブします。

イベントは、1分に何回もプロセスに星印を付けるサービスでトリガーされます。

最後に私の質問です:通知メソッドが呼び出されている間、アプリケーションをフリーズする方法はありますか?私のコードで新しいスレッドで実行されている通知か、subscribeOnは(私が疑うように)メインスレッドで通知を実行しています。

は問題が Schedulers.trampoline()断片である、

答えて

0

おそらく事前にありがとうございます。 Schedulers.trampoline()のドキュメントから

は、キューは、現在の作業が完了した後に実行されるように、現在のスレッド上で動作するスケジューラを作成し、返します。

Androidの場合は、現在のThreadをメインThreadから意味します。

このパラメータを削除し、Observableの動作を確認してください。

関連する問題