我想在浏览完web和rxdoc之后,从asynctask改为rxjava,但我找不到任何解决方案。有人知道吗?
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包装方法:
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");
}
});
关于android - 使用RxJava注册Google GCM,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34738038/