Android 使用RxJava注册Google GCM
我想从AsyncTask改为RxJava,在浏览了web和RxDoc之后,我没有找到任何解决方案。有人知道吗Android 使用RxJava注册Google GCM,android,rx-java,Android,Rx Java,我想从AsyncTask改为RxJava,在浏览了web和RxDoc之后,我没有找到任何解决方案。有人知道吗 public void getRegId(){ new AsyncTask<Void, Void, String>() { @Override protected String doInBackground(Void... params) { String msg = "";
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);
}
public void getRegId(){
新建异步任务(){
@凌驾
受保护字符串doInBackground(无效…参数){
字符串msg=“”;
试一试{
如果(gcm==null){
gcm=GoogleCloudMessaging.getInstance(getApplicationContext());
}
regid=gcm登记册(项目编号);
msg=“设备已注册,注册ID=“+regid;
Log.i(“GCM”,msg);
}捕获(IOEX异常){
msg=“错误:”+ex.getMessage();
}
返回味精;
}
@凌驾
受保护的void onPostExecute(字符串msg){
etRegId.setText(msg+“\n”);
}
}.执行(空,空,空);
}
下面是一个示例,演示如何使用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");
}
});
Observable.defer(新函数0(){
@凌驾
公共可观测呼叫(){
字符串msg=doSomeWork();
可观察的返回值。just(msg);
}
}).subscribeOn(Schedulers.computation())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(新订户(){
@凌驾
已完成的公共void(){}
@凌驾
公共无效者(可抛弃者){}
@凌驾
public void onNext(字符串消息){
etRegId.setText(msg+“\n”);
}
});
您可以使用
它是Google云消息的包装器,用于摆脱服务配置,根据应用程序状态处理前台和后台通知
经过一些设置后,您可以按如下方式注册设备:
RxGcm.Notifications.register(context)
.subscribe((token) -> //send to your server?);
我希望你觉得它有用 事实上,我正在使用它,它有点棒!