我其实新到Java编程,但我一直在这里以下几个解决我的问题,但没有找到一个适合我的情况,我似乎无法正确下来得到的代码。
我想有一个WebView
打开一个在线的页面(例如谷歌)的时候,手机在线,并打开一个本地的HTML页面时,电话处于脱机状态。
与此同时,虽然我希望手机覆盖本地页面时,它是网上,这样的离线本地页面不断更新,为最后一次的电话已连接到互联网。
这是如何任何想法可以这样做? 一些简单的指向正确的方向可能会有帮助。
非常感谢。
我其实新到Java编程,但我一直在这里以下几个解决我的问题,但没有找到一个适合我的情况,我似乎无法正确下来得到的代码。
我想有一个WebView
打开一个在线的页面(例如谷歌)的时候,手机在线,并打开一个本地的HTML页面时,电话处于脱机状态。
与此同时,虽然我希望手机覆盖本地页面时,它是网上,这样的离线本地页面不断更新,为最后一次的电话已连接到互联网。
这是如何任何想法可以这样做? 一些简单的指向正确的方向可能会有帮助。
非常感谢。
这听起来像一个简单的网页流量缓存机制给我。
以下应该做你在找什么:
WebView webView = new WebView( context );
webView.getSettings().setAppCacheMaxSize( 5 * 1024 * 1024 ); // 5MB
webView.getSettings().setAppCachePath( getApplicationContext().getCacheDir().getAbsolutePath() );
webView.getSettings().setAllowFileAccess( true );
webView.getSettings().setAppCacheEnabled( true );
webView.getSettings().setJavaScriptEnabled( true );
webView.getSettings().setCacheMode( WebSettings.LOAD_DEFAULT ); // load online by default
if ( !isNetworkAvailable() ) { // loading offline
webView.getSettings().setCacheMode( WebSettings.LOAD_CACHE_ELSE_NETWORK );
}
webView.loadUrl( "http://www.google.com" );
该方法isNetworkAvailable()
检查活动的网络连接:
private boolean isNetworkAvailable() {
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService( CONNECTIVITY_SERVICE );
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}
最后,不要忘了以下三个权限添加到您AndroidManifest.xml
:
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
这里有一个WebView中不能被本地缓存的场合。 如果页头包含以下字段,web视图将无法从该页面缓存的内容。 缓存控制:无店铺,无缓存杂注:无缓存
在这种情况下,可以自主修改服务器上的页面属性来解决缓存问题。
我知道这是一个老的文章,但它那种适合于我想要做的事。
我有一些控制家庭自动化的东西网页视图。 目前,页面只是刷新的使用元刷新每隔5分钟。
问题是,当没有移动信号,你只是这样的应用程序需要被终止,并重新打开得到一个错误页面。
这看起来似乎是从一两件事分开工作。 如果我使用页面的缓存版本,并按下按钮,以增加加热温度,而手机处于脱机状态,有什么事情发生? 将举办到行动,直到它的在线获取,然后发送它? 还是会那么所有不同步?
如果是后者,是有办法解决吗?