在项目中我们通常通过点击登陆或者加载来实现我们数据的获取展示,既然有点击事件那么点击次数和数据的获取次数就成为重点。接下来我们来限制一下我们通过点击事件的进阶来限制我们通过点击事件来获取数据的时间间隔。
首先我们需要一个空间Button按钮,一个内部或者外部类,观察者和被观察者对象。
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.d("wwb","触发了");
}
});
这是我们的控件的点击事件。
//创建一个view的接口形式
class Myviewone implements Observable.OnSubscribe<View>{
private Subscriber msub;
public Myviewone(View view){
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.d("wwb","触发了");
//发布通知
msub.onNext(view);
}
});
}
@Override
public void call(Subscriber<? super View> subscriber) {
msub=subscriber;
}
}
这个是我们创建的一个内部类。我们可以看到通过内部类实现了我们的一个observable的onsubscribe并且限定<>为我们的view控件对象,在实现方法之后就要实现它内部的call方法,然后我们通过创建私有的一个对象来进行赋值,然后我们写了一个方法参数呢就是控件对象,在里面实现它的一个点击事件。并且让我们的私有对象进行一个消息的发布。这样就可以将我们的一个改变发送出去。
//设置在规定的事件内有效的点击事件
Observable.create(new Myviewone(button))
//去设置一个点击的时间 参数1 规定时间的int值 设置时间的单位值。
.throttleFirst(1, TimeUnit.SECONDS)
.subscribe(new Action1<View>() {
@Override
public void call(View view) {
//当点击有效的业务逻辑
Log.d("wwb","触发了,有时间间隔");
}
});
最后要创建我们的贯彻着对象,来绑定我们的自定义类的一个被观察者,通过throttFrist来设置我们的事件时间类型和值,并且通过subscribe创建我们的Action1方法拿到call
在call即可进行相关的逻辑运算。
通过控件实现我们的点击事件,并且创建观察者对象,观察者的对象就是我们的创建的类构造方法将我们的view传递进去,并且还可以设置一个事件的间隔事件,之后获取我们的Action的call方法来执行我们的一个事件机制,这个中点击事件的限定可以保护了我们的事件获取数据的时候的安全。
是不是很牛逼,是不是很懵逼。我也是,一入Android深似海,所以一切慢慢来......