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。我想每 2 秒重复一次该功能以接收.jpg
在这种情况下,第一次加载图像将延迟 2s但是,当我更新照片时,它无法显示新照片
我还尝试了计时器"scheduleAtFixedRate"重复,但它不起作用。
因为处理程序只运行您发布到它的内容一次。 它不会重复这样做。 要重复这样做,可运行的需要在最后重新发布自己。
虽然我建议你不要这样做。 你真正改变形象的频率是多少? 每隔几分钟? 几个小时? 每 2 秒检查一次是荒谬的,您 99% 的时间都在浪费带宽。 使用更长的计时器。 更好的是,使用推送消息告诉客户端何时重新加载。
这是我在片段中的一个工作示例,但活动的逻辑是相同的。我包含了额外的代码,以便在应用程序继续运行时关闭下载Pause((。
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;
}