从缓存中加载 webview
Posted
技术标签:
【中文标题】从缓存中加载 webview【英文标题】:Load webview from cache 【发布时间】:2013-06-20 00:27:27 【问题描述】:我需要在可以访问 Internet 时从 Internet 加载 mWebview。当它不可用时,它需要从缓存中加载。我有一些东西,但它根本不加载网站
请帮帮我?
已添加权限: - android.permission.INTERNET - android.permission.WRITE_EXTERNAL_STORAGE - android.permission.ACCESS_NETWORK_STATE
private boolean isNetworkAvailable()
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService( CONNECTIVITY_SERVICE );
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo != null;
@SuppressLint("SetjavascriptEnabled")
@Override
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
// Layout Webview
mWebview = new WebView(this);
// Broadcast
Toast.makeText(this, "Laden van roosterwijzigingen.",
Toast.LENGTH_SHORT).show();
// Enable JavaScript
mWebview.getSettings().setJavaScriptEnabled(true); // enable javascript
mWebview.setHorizontalScrollBarEnabled(false);
mWebview.getSettings().setAppCacheMaxSize( 5 * 1024 * 1024 ); // 5MB
mWebview.getSettings().setAppCachePath( getApplicationContext().getCacheDir().getAbsolutePath() );
mWebview.getSettings().setAllowFileAccess( true );
mWebview.getSettings().setAppCacheEnabled( true );
mWebview.getSettings().setCacheMode( WebSettings.LOAD_DEFAULT ); // load online by default
final Activity activity = this;
// Make WebClient
mWebview.setWebViewClient(new WebViewClient()
// Trace Errors
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl)
Toast.makeText(activity, description, Toast.LENGTH_SHORT).show();
);
if ( !isNetworkAvailable() ) // loading offline
mWebview.getSettings().setCacheMode( WebSettings.LOAD_CACHE_ELSE_NETWORK );
mWebview.loadUrl("http://divers.ommelandercollege.nl/webportalen/dagrooster.php");
【问题讨论】:
【参考方案1】:我检查了您的代码并且缓存工作正常(使用http://yahoo.com 进行了测试)。您的问题必须出在 isNetworkAvailable()
方法中,因此不会调用 setCacheMode( WebSettings.LOAD_CACHE_ELSE_NETWORK)
。
要对此进行测试,请让 isNetworkAvailable()
始终返回 false
,并在首次加载网页后将您的设备置于飞行模式。
【讨论】:
这是不可能的,因为它根本不加载。即使我有 wifi 连接【参考方案2】:if ( !isNetworkAvailable() ) // loading offline
mWebview.getSettings().setCacheMode( WebSettings.LOAD_CACHE_ELSE_NETWORK );
style="color:red">// move this bracket
mWebview.loadUrl("http://divers.ommelandercollege.nl/webportalen/dagrooster.php");
// to here
【讨论】:
您的问题存在严重的格式问题,难以阅读。您可以对其进行编辑以使用代码格式。解释也总是有帮助的! :) 虽然这段代码 sn-p 可以解决问题,但including an explanation 确实有助于提高帖子的质量。请记住,您是在为将来的读者回答问题,而这些人可能不知道您提出代码建议的原因。以上是关于从缓存中加载 webview的主要内容,如果未能解决你的问题,请参考以下文章