在Android WebView中实现自动刷新,可以通过两种方法:
方法一:使用JavaScript定时刷新页面
onPageFinished()
方法中,启动一个JavaScript定时器。WebView.addJavascriptInterface()
注册一个本地对象供JavaScript调用。以下是实现自动刷新的完整示例代码:
import android.os.Bundle;
import android.webkit.JavascriptInterface;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
private WebView webView;
private Runnable refreshRunnable = new Runnable() {
@Override
public void run() {
webView.reload();
webView.postDelayed(this, 5000); // 刷新间隔为5秒
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webView = findViewById(R.id.webView);
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
webView.addJavascriptInterface(new WebAppInterface(MainActivity.this), "Android");
webView.postDelayed(refreshRunnable, 5000); // 页面加载完成后,延迟5秒执行刷新任务
}
});
webView.loadUrl("https://example.com"); // 替换为你需要加载的网址
}
@Override
protected void onDestroy() {
super.onDestroy();
if (refreshRunnable != null) {
removeCallbacks(refreshRunnable); // 销毁Activity时,移除刷新任务
}
}
public class WebAppInterface {
Context mContext;
WebAppInterface(Context context) {
mContext = context;
}
@JavascriptInterface
public void refreshPage() {
webView.reload();
}
}
}
方法二:使用WebView的setWebViewClient()
和onPageFinished()
方法结合定时器实现页面刷新
onPageFinished()
方法中,启动一个定时器。onTick()
方法中调用WebView.reload()
方法刷新页面。onFinish()
方法中停止定时器。以下是实现自动刷新的完整示例代码:
import android.os.Bundle;
import android.os.Handler;
import android.os.SystemClock;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
private WebView webView;
private Handler handler = new Handler();
private Runnable refreshRunnable = new Runnable() {
@Override
public void run() {
webView.reload();
handler.postDelayed(this, 5000); // 刷新间隔为5秒
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webView = findViewById(R.id.webView);
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
handler.postDelayed(refreshRunnable, 5000); // 页面加载完成后,延迟5秒执行刷新任务
}
});
webView.loadUrl("https://example.com"); // 替换为你需要加载的网址
}
@Override
protected void onDestroy() {
super.onDestroy();
handler.removeCallbacks(refreshRunnable); // 销毁Activity时,移除刷新任务
}
}
这两种方法都可以实现在Android WebView中自动刷新页面,你可以根据自己的需求选择合适的方法。