有没有一种方法可以每隔 x 秒刷新 webView?

huangapple go评论70阅读模式
英文:

Is there a way to refresh webView every x seconds?

问题

现在我有这个用于重新加载 webView 的函数:

public void reloadWebView() {
    final Handler handler = new Handler();
    handler.postDelayed(new Runnable() {
        @Override
        public void run() {
            webView.reload();
        }
    }, 5000);
}

并且它在 onCreate 函数中被调用:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    reloadWebView();
}

这个函数能够工作,但它只会运行一次。

英文:

Now I have this function for reload webView:

    public void reloadWebView() {
        final Handler handler = new Handler();
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                webView.reload();
            }
        }, 5000);}

And it is called on onCreate function

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        reloadWebView();


    }

The function works but it only runs once

答案1

得分: 1

以下是要翻译的内容:

这里是用于在 x 秒后更新您的 Web 视图的代码。

new CountDownTimer(5000, 1000) {

    public void onTick(long millisUntilFinished) {
        webView.reload();
        // 这里您可以编写重新加载 Web 视图的逻辑
    }

    public void onFinish() {
        // 如果有的话,隐藏进度条
    }

}.start();
英文:

Here is code to update your webview after x seconds

new CountDownTimer(5000, 1000) {

public void onTick(long millisUntilFinished) {
    webView.reload();
   //here you can have your logic to reload webview
}

public void onFinish() {
    // hide progress bar if any
  }

}.start();

答案2

得分: 1

在前台运行的情况下,很容易解决:

Handler handler = new Handler();

public void reloadWebView() {
    handler.postDelayed(new Runnable() {
        @Override
        public void run() {
            webView.reload();
            reloadWebView();
        }
    }, 5000);
}

请注意,handler 现在是一个字段,位于 reloadWebView() 方法之外。现在在你的 onCreate() 中调用它:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    reloadWebView();
}
英文:

Easy to solve as long as the Activity is running in foreground:

 Handler handler = new Handler();
 public void reloadWebView() {
    handler.postDelayed(new Runnable() {
        @Override
        public void run() {
            webView.reload();
            reloadWebView();
        }
    }, 5000);}

Note that handler is now a field, out of reloadWebView().
Now call it in your onCreate():

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        reloadWebView();


    }

huangapple
  • 本文由 发表于 2020年9月1日 20:09:46
  • 转载请务必保留本文链接:https://go.coder-hub.com/63687380.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定