[英]Signaling for exception from Callable thread without blocking in main thread
[英]ScheduledThreadPoolExecutor Callable() blocking my main Activity UI thread
如果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;
}
}
以下行int returnedInteger = sf.get();
塊等待結果。
而不是在return integerReturn
中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()可以。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.