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秒工作一次。非常感谢