2016-12-29 29 views
0

我想創建一個「正在搜索」文本,其格式如下: 「正在載入」。 - >「正在加載..」 - >「正在加載...」未來任務無法正常工作(Android)

然後,一旦我得到某些數據,停止此動畫文本,只需將文本設置爲「找到」。

我試圖實現這種方式:

ExecutorService threadPoolExecutor = Executors.newSingleThreadExecutor(); 
Future textAnimationTaskFuture; 
Runnable textAnimationTask; 

textAnimationTask = new Runnable() { 
      @Override 
      public void run() { 
       int passedTime = 0; 
       while(passedTime < 3000) 
       { 
        if(passedTime < 1000){   
         textView.setText("Loading."); 
        } 
        else if(passedTime >= 1000 && passedTime < 2000) 
        { 
         textView.setText("Loading.."); 
        }else if (passedTime >= 3000) 
        { 
         textView.setText("Loading..."); 
        } 
        passedTime = passedTime + 1; 
        if(passedTime == 3000) 
         passedTime = 0; 
       } 
      } 
     }; 

然後,我會跑的過程:

textAnimationTaskFuture = threadPoolExecutor.submit(textAnimationTask); 

,並取消它:

textAnimationTaskFuture.cancel(true); 
textView.setText("Found.); 

不幸的是,循環不停止取消(真)。

回答

0

我不知道它爲什麼不一致,但你有一個明確的問題是你試圖從線程而不是從UI線程改變視圖。爲了將文本設置爲你的觀點,你需要做到以下幾點:

runOnUiThread(new Runnable() { 
     @Override 
     public void run() { 
      textView.setText("MY_TEXT"); 
     } 
    }); 

關於循環不停止 - 我建議你調試它,從看代碼,我不能檢測與迴路中的任何問題。

+0

嘗試調試它,不幸似乎無法找到問題..也許我做錯了什麼..:/ – BVtp

+0

嗯......看看這裏,也許這會幫助你:http://stackoverflow.com /問題/ 13623445 /未來取消法 - 是 - 不工作 – yakobom