簡體   English   中英

ScheduledThreadPoolExecutor Callable()阻止了我的主Activity UI線程

[英]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 integerReturnreturn 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM