声明变量:不管是局部还是全局变量都是用var声明就可以
var x =2;
var y =3;
var z = x+y;
var pi=3.14;
var name="Bill Gates";//使用引号包括就是字符串了
var answer='Yes I am!';//可以使用单引号包括
默默码码的copy-seven
声明变量:不管是局部还是全局变量都是用var声明就可以
var x =2;
var y =3;
var z = x+y;
var pi=3.14;
var name="Bill Gates";//使用引号包括就是字符串了
var answer='Yes I am!';//可以使用单引号包括
Activity 间的数据通信,对于数据量比较大的,避免使用 Intent + Parcelable
的方式,可以考虑 EventBus 等替代方案,以免造成 TransactionTooLargeException
activity隐式跳转,在发出 Intent 之前必须通过 resolveActivity检查,避免找不到合适的调用组件,造成 ActivityNotFoundException 的异常
/**
* 判断发送的每项数据是否都满足 设置的函数条件
*/
private void useAll() {
Observable.just(1, 2, 3, 4, 5)
.all(new Predicate<Integer>() {
@Override
public boolean test(Integer integer) throws Exception {
return integer <= 10;
}
}).subscribe(new Consumer<Boolean>() {
@Override
public void accept(Boolean aBoolean) throws Exception {
KLog.d(TTAG, "结果是" + aBoolean);
}
});
}
在res/values
下面添加attrs.xml文件
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="JustEditText">
<attr name="ic_delete" format="reference" />
<attr name="delete_x" format="integer" />
<attr name="delete_y" format="integer" />
<attr name="delete_width" format="integer" />
<attr name="delete_height" format="integer" />
<attr name="ic_left_click" format="reference" />
<attr name="ic_left_unclick" format="reference" />
<attr name="left_x" format="integer" />
<attr name="left_y" format="integer" />
<attr name="left_width" format="integer" />
<attr name="left_height" format="integer" />
<attr name="lineColor_click" format="color" />
<attr name="lineColor_unclick" format="color" />
<attr name="linePosition" format="integer" />
<attr name="cursor" format="reference" />
</declare-styleable>
</resources>
关于合并数据源:之前使用了flatMap()以及concatMap()进行嵌套调用,,注册之后登陆
合并数据源2:合并数据(获取图书详情以及评论)统一展示到客户端:采用merge()或者zip()操作符
merge()例子:实现较为简单的从(网络+本地)获取数据,,统一展示
zip()例子:结合
Retrofit
以及Rxjava,实现多个网络请求合并获得数据,,统一展示
二者区别为:merge()只添加被观察者合并数据源的操作在observable观察者的onnext()里面处理,进行合并,合并的结果在
onComplete()
处理,zip()可以直接添加发射者,再添加合并数据源的bean,在转主线程,订阅,可以使用new Consumer<Bean>() )
里面处理合并结果
interval
进行轮询操作,类似于请求用户消息(之前一直使用handler) /**
* 轮询查询接口-使用操作符interval
* 此处主要展示无限次轮询,若要实现有限次轮询,仅需将interval()改成intervalRange()即可
*/
private void init() {
/**
* 参数说明:
* 参数1==第一次延迟时间,1秒后发送查询请求
* 参数2==间隔时间
* 参数3==实践单位
* 该例子发送的事件特点:延迟2s后发送事件,每隔1秒产生1个数字(从0开始递增1,无限个)
*/
Observable.interval(2, 1, TimeUnit.SECONDS)
/**
* 步骤2:每次发送数字前发送1次网络请求(doOnNext()在执行Next事件前调用)
* 即每隔1秒产生1个数字前,就发送1次网络请求,从而实现轮询需求
*/
.doOnNext(aLong -> {
KLog.d(TTAG, "第" + aLong + "次查询");
retrofitApi.getCall()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<Translation>() {
@Override
public void onSubscribe(Disposable d) {
//切断
d.dispose();
}
@Override
public void onNext(Translation translation) {
translation.show();
}
@Override
public void onError(Throwable e) {
KLog.d(TTAG, "请求失败了:失败原因是:" + e.getMessage());
}
@Override
public void onComplete() {
KLog.d(TTAG, "本次请求结束了");
}
});
}).subscribe(aLong -> {
KLog.d(TTAG, "接收到请求,这是第" + aLong + "次");
});
}
public final Disposable subscribe() {}
// 表示观察者不对被观察者发送的事件作出任何响应(但被观察者还是可以继续发送事件)
public final Disposable subscribe(Consumer<? super T> onNext) {}
// 表示观察者只对被观察者发送的Next事件作出响应
public final Disposable subscribe(Consumer<? super T> onNext, Consumer<? super Throwable> onError) {}
// 表示观察者只对被观察者发送的Next事件 & Error事件作出响应
public final Disposable subscribe(Consumer<? super T> onNext, Consumer<? super Throwable> onError, Action onComplete) {}
// 表示观察者只对被观察者发送的Next事件、Error事件 & Complete事件作出响应
public final Disposable subscribe(Consumer<? super T> onNext, Consumer<? super Throwable> onError, Action onComplete, Consumer<? super Disposable> onSubscribe) {}
// 表示观察者只对被观察者发送的Next事件、Error事件 、Complete事件 & onSubscribe事件作出响应
public final void subscribe(Observer<? super T> observer) {}
// 表示观察者对被观察者发送的任何事件都作出响应