如果Callable()ScheduledThreadPoolExecutor应该在像Runnable()这样的后台线程中运行那么为什么它会阻塞我的UI线程呢?
我认为应该在像Runnable这样的后台线程中运行。
ScheduledThreadPoolExecutor stpe;
在onCreate内部
ScheduledFuture<Integer> sf = stpe.schedule(new OtherObject2(), 5, TimeUnit.SECONDS);
try {
int returnedInteger = sf.get();
textViewThree.setText("the returned integer is: " + returnedInteger);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
嵌套内部类
public class OtherObject2 implements Callable<Integer> {
@Override
public Integer call() throws Exception {
Integer integerReturn = 23;
return integerReturn;
}
}
答案 0 :(得分:1)
以下行int returnedInteger = sf.get();
阻止等待结果。
答案 1 :(得分:0)
而不是OtherObject2中的return integerReturn
,运行一个特殊的UI任务:
final Integer integerReturn = 23;
runOnUiThread(new Runnable() {
public void run() {
textViewThree.setText("the returned integer is: " + integerReturn);
}
});
不需要OtherObject2来实现Callable,Runnable就足够了。不使用schedule()提交OtherObject2,execute()就可以了。