Javascript 下载网页并在连接可用时刷新
因此,我正在构建一个包含大量web内容的应用程序,我计划使用Phone Gap build发布它,但将在线托管所有内容并链接到它。我想知道是否有一种方法可以在有活动的internet连接供脱机使用时下载网页,以及当用户使用wifi连接时再次连接以刷新数据时(最好是在用户使用wifi连接时)。该网站将主要使用html、js和php。我将与bluehost一起主持Javascript 下载网页并在连接可用时刷新,javascript,android,html,ios,phonegap-build,Javascript,Android,Html,Ios,Phonegap Build,因此,我正在构建一个包含大量web内容的应用程序,我计划使用Phone Gap build发布它,但将在线托管所有内容并链接到它。我想知道是否有一种方法可以在有活动的internet连接供脱机使用时下载网页,以及当用户使用wifi连接时再次连接以刷新数据时(最好是在用户使用wifi连接时)。该网站将主要使用html、js和php。我将与bluehost一起主持 有没有办法做到这一点?提前谢谢!有点放荡 我不熟悉java,但我认为我可以提供完成工作的逻辑 你想做一个无限循环,检查用户是否在wifi
有没有办法做到这一点?提前谢谢!有点放荡 我不熟悉java,但我认为我可以提供完成工作的逻辑 你想做一个无限循环,检查用户是否在wifi上。如果为true,则使用wget、rsync或scp下载网站。像这样的事
while (true){
// do an if statement that checks if user is on wifi. Then do a then statement that uses rsync or wget.
}
有关如何在java中的while循环中嵌套if语句的信息:
我不知道wget、rsync或scp是否可以从java运行。您需要进一步研究它,或者编写自己的替代函数来实现它。比如:
function download_file() {
var url = "http://www.example.com/file.doc"
window.location = url;
}
您应该能够通过java这样做:
String whatToRun = "/usr/local/bin/wget http://insitu.fruitfly.org/insitu_image_storage/img_dir_38/insitu38795.jpe";
资料来源:
1.
2. 首先创建一个连接筛选器类
public class Connection_Status{
private static ConnectivityManager connectivityManager;
static boolean connected = false;
public static Boolean isOnline(Context ctx) {
try {
connectivityManager = (ConnectivityManager) ctx.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
connected = networkInfo != null && networkInfo.isAvailable()&& networkInfo.isConnected();
return connected;
} catch (Exception e) {
System.out.println("CheckConnectivity Exception: " + e.getMessage());
}
return connected;
}
}
在你的主课上呢
public class Main extends Activity{
private WebView mWebView;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mWebView = (WebView) findViewById(R.id.webview);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setBuiltInZoomControls(true);
if(Connection_Status.isOnline(Main.this)){
HttpClient httpclient = new DefaultHttpClient(); // Create HTTP Client
HttpGet httpget = new HttpGet("http://yoururl.com"); // Set the action you want to do
HttpResponse response = httpclient.execute(httpget); // Executeit
HttpEntity entity = response.getEntity();
InputStream is = entity.getContent(); // Create an InputStream with the response
BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) // Read line by line
sb.append(line + "\n");
String resString = sb.toString(); //
is.close(); // Close the stream
}
}
}
或者您可以在其上使用缓存,例如
mWebView.getSettings().setAppCacheMaxSize(1024*1024*8);
mWebView.getSettings().setAppCachePath(""+this.getCacheDir());
mWebView.getSettings().setAppCacheEnabled(true);
mWebView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
不要忘记添加以下权限
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- for the connection status-->
资料来源:
从商店下载PhoneGap应用程序时,会将其下载到设备上。它们基本上是index.html文件的包装器,但该应用程序实际上是用JavaScript编程的,JavaScript负责创建和显示视图等。您需要检查internet连接的唯一时间是在与后端(PHP)通信时。。。如果ajax请求失败,最好的解决方案是为用户提供一个按钮/链接,以便在用户恢复internet连接后重试,或者设置一个间歇触发的计时器以继续重试。。。永远不要在你的Phone Gap应用程序中使用
while(true)
循环-它会挂起。这是Java和android为什么?因为我正在用jquery mobile用HTML构建整个东西,并用phonegap发布它,因此没有本机android kt ios程序,也没有Java脚本你不想做无限循环,尤其是在手机上。Phonegap在联机和脱机时会触发事件。谢谢。这是一个更好的解决方案。PS您将只在bluehost上托管PHP。JavaScript/HTML/CSS都是通过应用程序从商店下载的。