我不清楚如何在RXJava中实现任务取消.
我对移植使用Guava构建的现有API很感兴趣ListenableFuture.我的用例如下:
Futures.transform()1- > 2- > 3,取消3传播到2,等等.关于这一点,RxJava维基中的信息很少; 我可以找到的唯一引用取消提及Subscription相当于.NET的Disposable,但据我所知,Subscription仅提供取消订阅序列中后续值的功能.
我不清楚如何通过这个API实现"任何订阅者可以取消"语义.我是以错误的方式思考这个问题吗?
任何输入将不胜感激.
class Event extends Immutable.Record {
constructor(text) {
super({text: text, timestamp: Date.now()});
}
}
Run Code Online (Sandbox Code Playgroud)
调用new Event()似乎返回一个constuctor函数:
new Event('started').toString()
Run Code Online (Sandbox Code Playgroud)
"function Record(values){if(values instanceof RecordType){return values;}
if(!(此实例为RecordType)){return new RecordType(values);}
if(!hasInitialized){hasInitialized = true; var keys = Object.keys(defaultValues); setProps(RecordTypePrototype,密钥); RecordTypePrototype.size = keys.length; RecordTypePrototype._name =名称; RecordTypePrototype._keys =键; RecordTypePrototype._defaultValues = defaultValues;}
this._map =地图(值);}"
而调用函数会返回预期的输出:
new Event('started')().toString()
Run Code Online (Sandbox Code Playgroud)
"Record {"text":"started","timestamp":1453374580203}"
我究竟做错了什么?
我正在设置android:enabled="false"自定义视图,但它似乎对该isEnabled()属性没有任何影响.
这是一个简单的测试用例:
public class TestView extends View {
public TestView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint p = new Paint();
p.setTextAlign(Align.CENTER);
p.setTextSize(ViewUtils.dpToPx(this, 10));
canvas.drawText("Enabled = " + (isEnabled() ? "true" : "false"),
getWidth() / 2,
getHeight() / 2,
p);
}
}
Run Code Online (Sandbox Code Playgroud)
和相应的XML:
<com.example.TestView
xmlns:android="http://schemas.android.com/apk/res/android"
android:background="@android:color/darker_gray"
android:enabled="false"
android:layout_width="100dp"
android:layout_height="100dp"/>
Run Code Online (Sandbox Code Playgroud)
输出视图如下所示:

有人可以解释一下原因吗?