使用 RxJava 注册 Google GCM [英] Register Google GCM by using RxJava
本文介绍了使用 RxJava 注册 Google GCM的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想在浏览网络和 RxDoc 后从 AsyncTask 更改为 RxJava,但我找不到任何解决方案.有人知道吗?
I want to change from AsyncTask to RxJava after go through around the web and RxDoc, I cound not found any solution about. Anyone has any idea?
public void getRegId(){
new AsyncTask<Void, Void, String>() {
@Override
protected String doInBackground(Void... params) {
String msg = "";
try {
if (gcm == null) {
gcm = GoogleCloudMessaging.getInstance(getApplicationContext());
}
regid = gcm.register(PROJECT_NUMBER);
msg = "Device registered, registration ID=" + regid;
Log.i("GCM", msg);
} catch (IOException ex) {
msg = "Error :" + ex.getMessage();
}
return msg;
}
@Override
protected void onPostExecute(String msg) {
etRegId.setText(msg + "\n");
}
}.execute(null, null, null);
}
推荐答案
以下是一个示例,展示了如何使用 RxJava 包装您的方法:
Here is an example showing how to wrap your method with RxJava:
Observable.defer(new Func0<Observable<String>>() {
@Override
public Observable<String> call() {
String msg = doSomeWork();
return Observable.just(msg);
}
}).subscribeOn(Schedulers.computation())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Subscriber<String>() {
@Override
public void onCompleted() {}
@Override
public void onError(Throwable e) {}
@Override
public void onNext(String msg) {
etRegId.setText(msg + "\n");
}
});
这篇关于使用 RxJava 注册 Google GCM的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文