2016-12-29 7 views
0

「検索中」のようなテキストを作成します。 「読み込み中」。 - > "読み込み中" - > "読み込み中..."今後のタスクが正常に動作しない(Android)

そして、一度特定のデータを取得したら、このアニメーションテキストを停止し、テキストを "Found"として設定します。

私はそのように実装してみました:

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.); 

残念ながらループはしていませんキャンセル時に停止する(true)。

答えて

0

私はそれが矛盾している理由は正確にはわかりませんが、あなたが持っている明確な問題は、UIスレッドからではなくスレッドからビューを変更しようとしていることです。あなたのビューにテキストを設定するには、次の操作を行う必要があります

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

停止していないループについて - 私はコードを見てから、私はループに問題を検出することはできません、あなたはそれをデバッグ示唆しています。

+0

それをデバッグしようとしましたが、残念ながら問題を見つけることができませんでした..おそらく私は何か間違っていました../ – BVtp

+0

Hmmm ...おそらくこれがあなたを助けます:http://stackoverflow.com/questions/13623445/future-cancel-method-is-not-working – yakobom

関連する問題