[英]Android update webview every 5 seconds
这是我的代码。 第一次触发,然后停止。 我想重复一遍。
new Handler().postDelayed(new Runnable() {
int i = 0;
String[] myStrings = { "http://192.168.1.199/jax.html", "http://192.168.1.199/jor.html" };
@Override
public void run() {
webView.loadUrl(myStrings[i]);
i++;
if (i ==2)
i = 0;
}
}, 5000);
这将使您的跑步重复。 它每5秒调用一次自己。
final int TIME_BETWEEN_RELOAD = 5000;
final Handler myHandler = new Handler();
final Runnable reloadWebViewRunnable = new Runnable() {
@Override
public void run() {
Log.d("run", "running the runnable now");
// Continue the reload every 5 seconds
myHandler.postDelayed(this, TIME_BETWEEN_RELOAD);
}
};
// start the initial reload
myHandler.postDelayed(reloadWebViewRunnable, TIME_BETWEEN_RELOAD);
您错误地使用了postDelayed
函数。 延迟发布是指在指定的毫秒数后运行某些内容。 从Android Documentaion
postDelayed(Runnable r, long delayMillis)
使Runnable r添加到消息队列中,并在经过指定的时间后运行。
当然,您的代码只会在第一次运行。 您所要做的就是为其添加5秒的延迟。
如果您想在固定间隔后发射东西,请考虑使用倒数计时器或警报管理器 。
如果您真的想使用postDelayed
,则可以执行此操作
Handler handler = new Handler();
int delay = 5000; //milliseconds
handler.postDelayed(new Runnable(){
public void run(){
//do something
handler.postDelayed(this, delay);
}
}, delay);
您需要在runnable的run()函数内再次调用handler.postDelayed(runnable)。 如果按照当前的方式进行操作,它实际上只会调用一次,因为这就是您要执行的操作。
因此,我建议为处理程序创建一个变量,为可运行变量创建另一个变量,而不是在这种情况下,使用新的Handler(){}和新的Runnable(){}只是为了简化操作。 所以你会有这样的事情:
Handler webHandler;
Runnable webRunnable;
//some other code in here you might have - remember to instantiate the handler
webRunnable = new Runnable(){
int i = 0;
String[] myStrings = { "http://192.168.1.199/jax.html", "http://192.168.1.199/jor.html" };
@Override
public void run() {
webView.loadUrl(myStrings[i]);
i++;
if (i ==2)
i = 0;
webHandler.postDelayed(webRunnable, 5000);
}
};
webHandler.postDelayed(webRunnable, 5000);
因此,像这样调用postDelayed,一旦在run()函数之外,然后在内部,它将运行可运行对象,然后在5秒后一次又一次地调用自身
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.