есть WebView, в него загружается web-страница, например google.com.
Я хочу обновлять страницу например каждые 20 секунд.
При этом я хочу отслеживать onPageFinished и onReceivedError.
Код:
Код: Выделить всё
public class MainActivity extends Activity {
Handler h;
WebView webView;
final String LOG_TAG = "myLogs";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webView = (WebView) findViewById(R.id.webView);
h = new Handler() {
public void handleMessage(Message msg) {
webView.loadUrl("http://www.google.com");
}
};
h.sendEmptyMessage(0);
webView.setWebViewClient(new WebViewClient() {
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
Log.d(LOG_TAG, "onReceivedError");
}
public void onPageFinished(WebView view, String url) {
Log.d(LOG_TAG, "onPageFinished");
h.sendEmptyMessageDelayed(0, 20000);
}
});
}
}01-28 13:12:05.955: D/myLogs(640): onPageFinished
01-28 13:12:27.384: D/myLogs(640): onPageFinished
01-28 13:12:48.844: D/myLogs(640): onPageFinished
Но если имитировать недоступность страницы, например вместо google.com написать заведомо несуществующий адрес, например wqfqfqwefwreqgf.com, то получается странная вещь, сразу вываливается:
01-28 13:16:41.237: D/myLogs(645): onReceivedError
01-28 13:16:41.276: D/myLogs(645): onPageFinished
01-28 13:16:41.656: D/myLogs(645): onPageFinished
то есть onPageFinished срабатывает два раза, хотя по идее должно быть так:
01-28 13:16:41.237: D/myLogs(645): onReceivedError
01-28 13:16:41.276: D/myLogs(645): onPageFinished
Более того, еще через 20 секунд видим:
01-28 13:17:01.746: D/myLogs(645): onPageFinished
01-28 13:17:02.286: D/myLogs(645): onReceivedError
01-28 13:17:02.296: D/myLogs(645): onPageFinished
01-28 13:17:02.397: D/myLogs(645): onPageFinished
Подскажите плиз, отчего такое странное поведение onPageFinished?
Получается что метод вызывается два раза подряд, несмотря на то что webView.loadUrl вызывается с 20-секундным интервалом.
