Android重复功能毕加索每2秒一次

Android重复功能毕加索每2秒一次,android,Android,“url”是我的http服务器,我将不断收到.jpg。 我希望每2秒重复一次该功能,以接收.jpg 在这种情况下,首次加载图像将延迟2秒 但是,当我更新照片时,它无法显示新照片 我还尝试了计时器“scheduleAtFixedRate”重复,但它不起作用。因为处理程序只运行一次您发布到它的内容。它不会重复这样做。要重复执行此操作,runnable需要在最后重新发布自己 虽然我建议你不要这样做。你真正改变形象的频率是多少?每隔几分钟?几个小时?每2秒钟检查一次是荒谬的,你浪费了99%的时间。使用更

“url”是我的http服务器,我将不断收到.jpg。 我希望每2秒重复一次该功能,以接收.jpg

在这种情况下,首次加载图像将延迟2秒 但是,当我更新照片时,它无法显示新照片


我还尝试了计时器“scheduleAtFixedRate”重复,但它不起作用。

因为处理程序只运行一次您发布到它的内容。它不会重复这样做。要重复执行此操作,runnable需要在最后重新发布自己


虽然我建议你不要这样做。你真正改变形象的频率是多少?每隔几分钟?几个小时?每2秒钟检查一次是荒谬的,你浪费了99%的时间。使用更长的计时器。更好的是,使用推送消息通知客户端何时重新加载。

这是我在片段中提供的一个工作示例,但对于活动,逻辑是相同的。 我包含了额外的代码,用于在应用程序启动Pause()时关闭下载

handler.postDelayed(this,2000);需要申报到最终,作业仍不能重复。。。
    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);
        }
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;
    }