WebView 自动刷新

Auto Refresh in WebView

我正在为个人项目开发一个基本应用程序,其中包括数字时钟、模拟时钟、日期显示和天气小部件, 我使用 WebView 对象制作了天气小部件,它加载了 MSN Weather。现在唯一剩下的就是让 WebView 每 15 分钟刷新一次。

我已经阅读了各种 Whosebug 帖子,但无法实现其中任何一个(我是应用程序开发的新手,我在代码中编写的所有内容都是从 Android 开发文档或这里)

我的 WebView XML 代码:

<WebView
    android:id="@+id/webview"
    android:layout_width="0dp"
    android:layout_height="352dp"
    android:layout_marginStart="35dp"
    android:layout_marginTop="25dp"
    android:layout_marginEnd="35dp"
    android:layout_marginBottom="25dp"
    android:overScrollMode="never"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.65"
    app:layout_constraintStart_toEndOf="@+id/digitalclock"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="0.666"></WebView>

我的MainActivity.java:

public class MainActivity extends AppCompatActivity { private WebView webView;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    webView = (WebView) findViewById(R.id.webview);
    webView.setWebViewClient(new WebViewClient());
    webView.loadUrl("https://www.msn.com/en-in/weather/today/Indira-Puram,Uttar-Pradesh,India/we-city?form=PRWLAS&iso=IN&el=BrSTQuEAtMKg0ieFIZL7dsSW4wabraPd56ExjVOnG498zXJC6snI8phK%2Fm3kngtYUxMgtIHuTpASUdkcj74e18ed11%2FJGPgvtNUExJNmB6MbbUPuzf2%2B2TVwoTiWCxnz");
    webView.reload();
    Calendar calendar = Calendar.getInstance();
    String currentDate = DateFormat.getDateInstance(DateFormat.FULL).format(calendar.getTime());

    TextView textviewdate = findViewById(R.id.text_date);
    textviewdate.setText(currentDate);
}

}

有没有什么简单的方法可以在没有任何用户交互的情况下执行自动刷新?

提前致谢

Handler handler = new Handler();
private Runnable runnableCode = new Runnable() {
    @Override
    public void run() {
       runOnUiThread(new Runnable() {

            @Override
            public void run() {
                webview.loadUrl(url); // Write your url to load here 
            }
        });
       handler.postDelayed(this, timeInterval); // update your time interval here (15 min)
    }
};
handler.post(runnableCode);

不要忘记删除回调

handler.removeCallbacks(runnableCode);

在 onCreate 之外创建一个方法 refresh()

public void refresh() {
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
    @Override
    public void run() {
    webView.loadUrl("https://www.msn.com/en-in/weather/today/Indira-Puram,Uttar-Pradesh,India/we-city?form=PRWLAS&iso=IN&el=BrSTQuEAtMKg0ieFIZL7dsSW4wabraPd56ExjVOnG498zXJC6snI8phK%2Fm3kngtYUxMgtIHuTpASUdkcj74e18ed11%2FJGPgvtNUExJNmB6MbbUPuzf2%2B2TVwoTiWCxnz");
    //webView.reload();
    Calendar calendar = Calendar.getInstance();
    String currentDate = DateFormat.getDateInstance(DateFormat.FULL).format(calendar.getTime());

    textviewdate.setText(currentDate);
    }
}, 50000);//increase if want more time  

在oncreate方法中调用refresh() 每 5 秒刷新一次