我的应用程序首先在 onCreate 上将网页加载为 WebView。我应该将它扩展到一个新线程,因为它可能会挂起一点吗?或者至少是一种显示页面仍在加载的方法。它偶尔会显示为白色几秒钟。
另外,有没有办法防止页面在方向改变时重新加载?
我的应用程序首先在 onCreate 上将网页加载为 WebView。我应该将它扩展到一个新线程,因为它可能会挂起一点吗?或者至少是一种显示页面仍在加载的方法。它偶尔会显示为白色几秒钟。
另外,有没有办法防止页面在方向改变时重新加载?
webview 自己处理线程,所以你不必担心。
您可以在页面开始和完成加载时注册回调。设置进度条或任何您想要的都由您决定。有关详细信息,请参阅WebChromeClient.onProgressChanged()。这是一个很好的帖子,提供了一些细节。
您可以在清单中添加一些内容来告诉系统您不关心方向变化。将以下内容添加到您的活动定义中,
android:configChanges="orientation"
另一种选择是将您的应用程序锁定到一个方向或另一个方向,
android:screenOrientation="portait"
广告 1. 我没有(也不应该)在单独的线程中这样做。
WebView
进度条 - Android WebView 进度条
广告 2.您可以通过在清单中添加android:screenOrientation="portait"
或"landscape"
声明来阻止方向更改。Activity
您应该使用进度对话框。显示对话框,直到将网页加载到 WebView。
public final class MyWebview extends Activity {
private static final int DIALOG2_KEY = 1;
private ProgressDialog pd = null;
private static final String AmitBlog="YOUR URL";
private WebView webView;
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
pd = new ProgressDialog(this);
webView = (WebView) findViewById(R.id.webview);
webView.setWebViewClient(new HelpClient());
webView.getSettings().setBuiltInZoomControls(true);
/** Showing Dialog Here */
showDialog(DIALOG2_KEY);
}
@Override
protected void onResume() {
super.onResume();
LoadView();
}
private void LoadView()
{
webView.loadUrl(AmitBlog);
}
/** Its very important while navigation hardware back button if we navigate to another link .Its like a Stack pop of all the pages you visited in WebView */
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
if (webView.canGoBack()) {
webView.goBack();
return true;
}
}
return super.onKeyDown(keyCode, event);
}
/** WebViewClient is used to open other web link to the same Activity. */
private final class HelpClient extends WebViewClient {
@Override
public void onPageFinished(WebView view, String url) {
setTitle(view.getTitle());
/** Dismissing Dialog Here after page load*/
dismissDialog(DIALOG2_KEY);
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.startsWith("file")) {
return false;
} else{
view.loadUrl(url);
return true;
}
}
}
@Override
protected Dialog onCreateDialog(int id) {
switch (id)
{
case DIALOG2_KEY:
{
pd.setMessage(getResources().getString(R.string.Loading));
pd.setIndeterminate(true);
pd.setCancelable(false);
return pd;
}
}
return null;
}
}