1
我試圖一個接一個地加載多個頁面,每個加載之間間隔30秒。這是我的課:Android WebView不會加載多個頁面
public class MainActivity extends Activity {
private WebView wv;
@SuppressLint("SetJavaScriptEnabled")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
wv = new WebView(this);
wv.setWebViewClient(new WebViewClient());
wv.getSettings().setJavaScriptEnabled(true);
setContentView(wv);
String[] urlArr = {"http://www.google.com", "http://www.cnn.com", "http://www.wired.com"};
int delay = 30 * 1000;
Handler handler = new Handler();
for(int i = 0; i < urlArr.length; i++) {
MyRunnable runnable = new MyRunnable(urlArr[i]);
handler.postDelayed(runnable, delay);
delay = delay + 30 * 1000;
}
}
private class MyRunnable implements Runnable {
private String url;
public MyRunnable(String url) {
this.url = url;
}
public void run() {
wv.loadUrl(url);
Log.d("MainActivity", "PageLoaded: " + url);
}
}
}
所以,邏輯很簡單:我有一個單一的WebView實例。然後,在週期內,我打電話postDelayed()
。它僅加載google.com,其他兩個不加載,即使日誌顯示「PageLoaded」。有沒有使用Handler
的解決方案?
只是檢查出你的secound網址是否在你的run方法中調用或不? –
你不能像wv.loadUrl(url)那樣說「PageLoaded」;您只請求wv加載該頁面。如果你想知道何時加載頁面,你必須像這樣實現你的WebViewClient的onPageFinished():wv.setWebViewClient(新的WebViewClient(){public void onPageFinished(WebView webview,String url){ Log.d(「 「WebViewActivity」,「onPageFinished()」+ url); Toast.makeText(WebViewActivity.this,「onPageFinished()\ n」+ url,Toast.LENGTH_SHORT).show(); WebViewActivity.this.setTitle(url); } }並使用int delay = 0;以 \t \t); – greenapps
我知道「PageLoaded」不是正確的日誌記錄方式,因爲您建議只有在回調onPageFinished時才加載頁面。這只是檢查MyRunnable中的run()方法是否被調用。 – Angelo