Articles of rx android

如何使用rxandroid来监听gps位置更新

这些天我开始学习反应式编程。 在我的应用程序中,我已经转向使用rxandroid来处理异步处理数据的许多情况。 但我不知道如何申请位置监听器。 有没有办法订阅用户位置更改? 请给我一个主意。

在Retrofit 2上使用RxJavaCallAdapterFactory时的AbstractMethodError

我收到此错误: FATAL EXCEPTION: main E/AndroidRuntime: java.lang.AbstractMethodError: abstract method not implemented at retrofit.RxJavaCallAdapterFactory.get(RxJavaCallAdapterFactory.java) at retrofit.Retrofit.nextCallAdapter(Retrofit.java:189) at retrofit.Retrofit.callAdapter(Retrofit.java:175) at retrofit.MethodHandler.createCallAdapter(MethodHandler.java:45) at retrofit.MethodHandler.create(MethodHandler.java:26) at retrofit.Retrofit.loadMethodHandler(Retrofit.java:151) at retrofit.Retrofit$1.invoke(Retrofit.java:132) at $Proxy0.getPosts(Native Method) 在尝试使用RxJavaCallAdapterFactory进行改造时。 我正在使用com.squareup.retrofit:retrofit:2.0.0-beta1和com.squareup.retrofit:adapter-rxjava:2.0.0-beta1 。 这是我创建api接口的方法: Retrofit retrofit = new Retrofit.Builder() .baseUrl(FORUM_SERVER_URL) .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .addConverterFactory(GsonConverterFactory.create()) .build(); mForumApi = retrofit.create(ForumApi.class); FORUM_SERVER_URL是 private static final String FORUM_SERVER_URL = “http://jsonplaceholder.typicode.com”; 我的界面方法是: @GET(“/posts”) public Observable<List> […]

过滤Rxjava中的Object列表

我想根据用户的查询过滤List ,然后将List返回给他/她。我发现了如何过滤项目但问题是我不知道如何返回List 。 我也看到了一些迭代和调用flatMap方法,但我不认为这是一种优雅的方式。 这是我的最后一次尝试: Observable.from(my_list_of_object) .debounce(500, TimeUnit.MILLISECONDS) .filter(new Func1() { @Override public Boolean call(MyObject o) { return o.getName().contains(query); //filtering } }) .observeOn(Schedulers.computation()) //problem is here and I dont know how //to convert filtered Item to list

如何制作RxErrorHandlingCallAdapterFactory?

我find了这个 。 但是在新的ver compile ‘com.squareup.retrofit2:adapter-rxjava:2.2.0’在CallAdapter它有两个参数CallAdapter 如何修改RxCallAdapterWrapper以implement来自CallAdapter

使用Rx去除按钮单击

我正在尝试制作一个简单的“按钮去抖动器”,它将计算过滤后的点击次数并通过TextView显示它。 我希望以一种方式过滤快速/垃圾邮件点击,这种方式可以忽略间隔时间小于300毫秒的点击次数。 我做了我的研究,偶然发现了Rx的令人敬畏的debounce() ,理论上它应该做我想要的确切事情。 ..或者我想。 由于应用程序似乎只注册了第一次点击; 无论我多久等待,计数器都不会增加。 这是我的一段代码: … RxView.clicks(mButton) .debounce(300, TimeUnit.MILLISECONDS) .subscribe(new Subscriber() { public int mCount; @Override public void onCompleted() { } @Override public void onError(Throwable e) { } @Override public void onNext(Object o) { mText.setText(String.valueOf(++mCount)); } }); … 我究竟做错了什么? 我试图在没有debounce()的情况下运行它并且它完美无缺(每次按下按钮时计数器都会递增)。 提前致谢!

在retryOn时将Retrofit2与rx一起使用时出现InterruptedIOException

我正在使用rx-android改装2 我有相当复杂的重试逻辑, 部分工作 。 我切断了不相关的代码来简化它。 这里是: public class RetryWithDelay implements Func1<Observable, Observable>, Constants { @Override public Observable call(Observable attempts) { return attempts.flatMap(new Func1<Throwable, Observable>() { @Override public Observable call(Throwable throwable) { int statusCode = 500; if (throwable instanceof HttpException) { HttpException httpException = (HttpException) throwable; statusCode = httpException.code(); } boolean shouldRetry = shouldRetry(); if (shouldRetry […]

Android中的Observable vs. Service

我想从Android API的异步执行方式迁移到Rx。 特别是我的应用程序中有一个照片库,当用户滑动照片时,它经常从服务器获取新照片(它是基于ViewPager进行横向滑动)。 它是这样发生的:每当ViewPager想要一张新照片时,它就会要求它的演示者(用MVP术语)来获取它,然后再将它带到模型中。 该模型向IntentService发送新意图以下载新图像: 现在看起来是另一种方式: 对于IntentService如果我们有很多请求下载图像,这些请求将在一个IntentService中排队并一次处理一个。 使用Rx,下载图像的许多请求会产生许多Observable并且可能消耗大量内存(我还没有完成对Rx的重构,因此没有进行实验,但可能有人已经考虑过它)。 我对你的不满感到满意吗? 有没有更好的方法与RxAndroid做同样的事情?

使用RxJava + Retrofit为列表中的每个项目发出API请求

我试图通过链接多个改进的api调用来创建一个observable。 步骤是: 使用api调用获取json对象列表 对于列表中的每个对象,进行另一个api调用以获取有关该项目的更多详细信息 将从此新详细对象获取的数据写入磁盘上的文件(对于列表中的每个项目都会发生这种情况) 最后返回一个单独的对象的observable,该对象要求为每个先前的对象创建一个文件 这是我到目前为止: public static Observable downloadFiles() { DownloadedFiles downloadedFiles = new DownloadedFiles(); Observable.create(subscriber -> { return getRestService().getObjectList() .flatMapIterable(objects -> objects) .flatMap(objectLimited -> getRestService().getObject(objectLimited.getPath())) .doOnNext(objectFull -> { try { File file = new File(); // Extract data from objectFull and write new file to disk // … } catch (IOException e) […]

RxJava – 如何在Android中的4个点击事件中调用订阅者

在android中我有一个像这样定义的文本视图: 我的目标是在点击4次之后,我想开始一项新活动。 我需要用RXJava做到这一点; 这是一项要求。 或rxAndroid , rxBinding等 我的活动如下: public class MainActivity extends Activity implements onClickListener { TextView tv; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv=(TextView)findViewById(R.id.text1); tv.setOnClickListener(this); } @Override public void onClick(View v) { if(v.getId() == R.id.text1){ } } } 更新:但这只是标准的做法。 必须有一种方法可以使用反应式rxJava API。 因此,我没有使用带有onClicklistener , […]

为什么使用toList()的debounce()在RxAndroid中不起作用?

当我使用debounce() ,然后从后端获取数据和我想要转换为另一个数据的数据,最后使用toList() 。 当我使用toList()没有任何事情发生没有任何日志不在订阅和错误,没有toList()它的工作和subscribe()方法进入尽可能多的我有书的清单,我测试了它的代码的第二部分它没有debounce()只是getItems()并使用toList()它的工作原理。 下面是我的代码第一部分, itList() debounce()和itList()不起作用,第二部分使用toList() public Flowable<List> getItems(String query) {} textChangeSubscriber .debounce(300, TimeUnit.MILLISECONDS) .observeOn(Schedulers.computation()) .switchMap(s -> getItems(s).toObservable()) .flatMapIterable(items -> items) .map(Book::convert) .toList() .observeOn(AndroidSchedulers.mainThread()) .subscribe(books -> { Log.i(“test”, “” + books.toString()); }, error -> { Log.i(“test”, “” + error); }); getItems(query).flatMapIterable(items -> items) .map(Book::convert) .toList() .observeOn(AndroidSchedulers.mainThread()) .subscribeOn(Schedulers.io()) .subscribe(books -> { Log.i(“test”, “” + “” […]