Java Android每5秒更新一次webview
这是我的密码。它第一次开火,但随后停止。我想重复一遍Java Android每5秒更新一次webview,java,android,Java,Android,这是我的密码。它第一次开火,但随后停止。我想重复一遍 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
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);
这将导致您的runnable重复。它每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);
您需要在runnable的run()函数中再次调用handler.postDelayed(runnable)。如果你现在这样做,它实际上只会叫它一次,因为这就是你告诉它要做的 因此,我建议为处理程序创建一个变量,为runnable创建另一个变量,而不是使用新的处理程序(){}和新的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()函数外部,然后在内部,它将运行runnable,然后在5秒钟后再次调用自己,这是错误地使用了
postDelayed
函数。Post delayed用于在指定的毫秒数之后运行某些内容。来自Android文档
postDelayed(Runnable r, long delayMillis)
使可运行的r添加到消息队列中,以运行
经过指定的时间后
当然,您的代码只会第一次运行。你所做的只是增加5秒的延迟
如果你想在定期的时间内发射某物,请考虑使用A或AN.
如果您确实想使用postDelayed
,您可以这样做
Handler handler = new Handler();
int delay = 5000; //milliseconds
handler.postDelayed(new Runnable(){
public void run(){
//do something
handler.postDelayed(this, delay);
}
}, delay);
您需要在run方法中再次调用postdayed方法,以使代码每5秒工作一次。非常感谢