初学者* - 让android WebView重新加载间隔

时间:2015-07-31 21:53:00

标签: java android webview

我是Android和Java的新手。我设法构建了一个非常简单的WebView应用程序,并且我一直试图让它在特定时间间隔刷新提供的URL。 这是我的代码,如何更改?:

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.webkit.WebView;


public class MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

       WebView view = (WebView) this.findViewById(R.id.webView);
        view.getSettings().setJavaScriptEnabled(true);

        String url = "https://mywebsite.com/";
        view.loadUrl(url);

    }

2 个答案:

答案 0 :(得分:1)

/** timer */
private Timer _timer;

/** timer task interval rate */
private int _rate;

/** timer task */
privat TimerTask _timerTask = new TimerTask() {
        @Override
        public void run() {
            getActivity().runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    /**your web view routines  */

                    }
                }
            });
      };

/** set timer method */
private void setTask() {
    /** check if timer was already not set */
    if(_timer!=null) {
        /** then just return */
        return;
    }
    /** create timer */
    _timer = new Timer();
    /** set rate */
    _rate = 1000; // repeat interval in ms
    /** schedule timer task */
    _timer.scheduleAtFixedRate(_timerTask, 0, _rate);
}

/** cancel timer method */
private void cancelTask() {
     /** check for timer */
     if (_timer != null) {
        /** disable timer schedule */
        _timer.cancel();
    }
}

我指出@mattfred解决方案适用于单身!执行任务&除了从onCreate()调用他的set方法之外,还会从Activity外部线程调用失败,这是浪费资源(参见:保存的实例状态)

PS。另请阅读避免操作小部件上的错误,尤其是在使用TIMER时 !!!

any stuff involving UI shoul by done on UI THREAD

PS2。

一个简单的 schedule()方法将立即执行,而 scheduleAtFixedRate()方法需要和额外的参数,这是再次重复任务&再次在特定的时间间隔。

More info

答案 1 :(得分:1)

不要挣扎于Java代码本身,我建议用javascript来做。 只需在页面加载一段时间后执行location.reload():

setTimeout(function(){
location.reload()
},seconds*1000)