繁体   English   中英

Android每5秒更新一次Webview

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM