我是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);
}
答案 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()方法需要和额外的参数,这是再次重复任务&再次在特定的时间间隔。
答案 1 :(得分:1)
不要挣扎于Java代码本身,我建议用javascript来做。 只需在页面加载一段时间后执行location.reload():
setTimeout(function(){
location.reload()
},seconds*1000)