2017-04-10 3 views
0
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Handler handler = new Handler(); 
    handler.postDelayed(new Runnable() { 
     @Override 
     public void run() { 

      loadImageFromUrl(url); 

     } 
    }, 2000); 
    addTouchlistener(); 
    addButtonListener(); 
} 

private void loadImageFromUrl(String url) { 
    Picasso.with(iv.getContext()) 
      .load(url) 
      .networkPolicy(NetworkPolicy.NO_CACHE, NetworkPolicy.NO_STORE) 
      .into(iv); 
     } 

"url"は自分のhttpサーバーです。私は.jpgを継続的に受信します。 私はこの場合の.jpgAndroidのリピート機能Picasso 2秒ごと

を受信する機能ごと2Sを繰り返し、初めて画像が 2秒遅れとなりますロードしかし、私は私の写真を更新するとき、それは新しい写真

を表示することはできませんしたいです

私はまた、 "scheduleAtFixedRate"というタイマーを繰り返し試しましたが、うまくいきません。

答えて

0

ハンドラはあなたが投稿した内容のみを一度実行するためです。繰り返しはしません。このように繰り返し実行するには、実行可能ファイルは最後に再送信する必要があります。

私はこのようにしないことをお勧めしますが、どのくらいの頻度でイメージを実際に変更しますか?数分ごとに?数時間? 2秒ごとにチェックするのはばかげているので、時間の99%を無駄にしています。はるかに長いタイマーを使用してください。さらに、プッシュメッセージを使用して、クライアントにリロードするタイミングを伝えます。

0

これはフラグメントに含まれている実例ですが、ロジックはアクティビティと同じです。 アプリがonPause()になったときにダウンロードを無効にするためのコードを追加しました。

protected Handler programacionTimer; 
protected Runnable programacionRunnable; 

.... 

@Override 
    public void onResume() { 
     super.onResume(); 
     if (programacionTimer == null) { 
       programacionTimer = new Handler(); 
     } 

     if (programacionRunnable == null) { 
      programacionRunnable = new Runnable() { 
        @Override 
        public void run() { 

          //Here what you to do (download the image) 

          programacionTimer.postDelayed(this, 2000); 

        } 

      }; 
     } 

     programacionTimer.postDelayed(programacionRunnable, 2000); 

} 


@Override 
    public void onPause() { 
     super.onPause(); 

     programacionTimer.removeCallbacks(programacionRunnable); 
     programacionRunnable = null; 
    } 
+0

the handler.postDelayed(this、2000);最後に宣言する必要があり、仕事はまだ繰り返すことができません... –

関連する問題