Android 在混合应用程序中本地下载HTML文件

Android 在混合应用程序中本地下载HTML文件,android,ios,hybrid-mobile-app,ios-web-app,Android,Ios,Hybrid Mobile App,Ios Web App,在我们的混合应用程序中,我们需要在应用程序中本地维护HTML。这些HTML在托管服务器中更改后必须在本地刷新。实现这一点的方法应该是什么?如果有一个带有最新更新的时间戳,每次启动应用程序时都检查这个时间戳,如果它比执行的最新更新更新要新,那么重新下载HTML文件怎么样?当然,这可以扩展为按文件或按目录执行,而不是仅重新下载更改的文件。您可以在WebView中加载任何HTML内容或文件 使用该方法,您可以加载任何HTML数据: //read html data from any file or r

在我们的混合应用程序中,我们需要在应用程序中本地维护HTML。这些HTML在托管服务器中更改后必须在本地刷新。实现这一点的方法应该是什么?

如果有一个带有最新更新的时间戳,每次启动应用程序时都检查这个时间戳,如果它比执行的最新更新更新要新,那么重新下载HTML文件怎么样?当然,这可以扩展为按文件或按目录执行,而不是仅重新下载更改的文件。

您可以在WebView中加载任何HTML内容或文件

使用该方法,您可以加载任何HTML数据

//read html data from any file or resource
String HTML = "<html><head><title>TITLE</title></head><body><center><b>MY BODY</b></center></body></html>"; 
//load HTML inside webview
webView.loadDataWithBaseURL(null, HTML, "text/html", "utf-8", null);
File htmlFile = new File(Environment.getExternalStorageDirectory() + "page.html");
webView.loadUrl("file:///" + htmlFile.getAbsolutePath());
或者从资产文件夹:

webView.loadUrl("file:///android_asset/pageInAssets.html");

您可以定期从服务器获取更新的数据(并将其存储在本地),也可以在用户每次连接互联网时获取更新的数据。

如果您在android或iphone设备上处理移动应用程序中的HTML文件,您需要注意以下因素

1。数据处理-解析数据并在设备屏幕上呈现数据的最佳方式

假设您的HTML文件有1000个节点,每个节点将有10个子节点。现在,您尝试根据第800个节点中的键获取一个值。现在发生的是,解析器在找到搜索值之前读取1到800个节点中的每个节点。这将造成非常糟糕的用户体验

为了避免这种情况,对于android移动应用程序,使用JSON文件格式;对于iOS设备,使用PLIST文件格式

由于您的目标是一个混合应用程序,它可能同时在android和iphone设备上运行。所以,在服务器中,创建转换数学并相应地向设备呈现适当的文件

2。数据加载—应用程序与服务器同步以更新HTML文件时要记住的事项。

电池利用率-如果您的应用程序定期访问服务器以查看HTML文件是否有任何更新,则会对设备电池造成很大影响,并且应用程序的网络利用率也会很高

我建议的方法是,如果文件有任何更新,服务器应该将消息推送到应用程序。基于此,用户可以选择更新应用程序

启动文件同步之前要做的事情。

  • 使用前应检查设备的当前电池电量 正在启动与服务器的数据同步

  • 应检查网络状态。如果设备损坏,则应进行升级 已连接到wifi

  • 根据用户位置和时间戳,您可以选择在用户未使用手机时执行同步


  • 我的混合应用背景:我喜欢它们。我遇到了许多问题,并已修复了几乎所有问题

    当我遇到需要在多个设备上使用服务器或数据库的情况时,我喜欢这样做

    台阶
  • 编写你的web应用程序
  • 在我免费使用的廉价服务器上托管web应用程序
  • 运行web服务器
  • 在您的混合应用程序中,使混合应用程序仅具有一项功能,即链接到Web服务器的IFRAME

  • 通过这样做,您将实现什么:
  • 一个全天候运行的Web服务器,您不必担心服务器发热或其他问题
  • 免费网络服务器
  • 你的应用程序将在设备上占用更少的空间,因为所有内容都在云上
  • 您的应用程序下载时间将缩短
  • 你可以让你的应用程序将
    .html
    文件缓存到客户端,这样他们以后就可以在没有网络连接的情况下查看页面
  • 如果您正确缓存文件,则每次连接到wifi并查看.html页面时,它都应该检查服务器是否有新版本的html文件
  • 希望这有帮助
  • 您可以从本地网页(例如,项目资源文件夹中的网页)加载,以便在项目中创建一个文件html/index.html
  • 此代码有两个按钮本地和远程页面
  • Html文件资源应包含以下详细信息

    <!doctype html>
    <html>
    <head>
        <meta charset="utf-8">
        <title>Google</title>
        <meta name="description" content="">
        <meta name="author" content="">
    </head>
    <body>
        <h1>Hello there</h1>
        <p>Welcome to this webpage</p>
    </body>
    </html>
    
    var win = Titanium.UI.createWindow({
        title:"Loading Local and Remote Web Pages",
        backgroundColor:"#FFFFFF",
    });
    
    var loadLocalButton = Titanium.UI.createButton({
        title:"Load local",
        height:36,
        width:100,
        bottom:12,
        left:12
    });
    
    var loadRemoteButton = Titanium.UI.createButton({
        title:"Load remote",
        height:36,
        width:100,
        bottom:12,
        right:12
    });
    
    var webView = Titanium.UI.createWebView({
        top:0,
        left:0
    });
    
    loadLocalButton.addEventListener("click", function(e){
        //You can load from a local webpage (e.g. a webpage in the Resources folder of your project)
        webView.url = "html/index.html";
        //or you can load an HTML-formatted string
        webView.html = "<h1>This is from a string</h1><p>Yes, it is</p>";
    });
    
    loadRemoteButton.addEventListener("click", function(e){
        webView.url = "http://www.google.com";
    });
    
    win.add(webView);
    win.add(loadLocalButton);
    win.add(loadRemoteButton);
    
    win.open();
    
    
    谷歌
    你好
    欢迎浏览本网页

    下面是app.js文件的详细信息

    <!doctype html>
    <html>
    <head>
        <meta charset="utf-8">
        <title>Google</title>
        <meta name="description" content="">
        <meta name="author" content="">
    </head>
    <body>
        <h1>Hello there</h1>
        <p>Welcome to this webpage</p>
    </body>
    </html>
    
    var win = Titanium.UI.createWindow({
        title:"Loading Local and Remote Web Pages",
        backgroundColor:"#FFFFFF",
    });
    
    var loadLocalButton = Titanium.UI.createButton({
        title:"Load local",
        height:36,
        width:100,
        bottom:12,
        left:12
    });
    
    var loadRemoteButton = Titanium.UI.createButton({
        title:"Load remote",
        height:36,
        width:100,
        bottom:12,
        right:12
    });
    
    var webView = Titanium.UI.createWebView({
        top:0,
        left:0
    });
    
    loadLocalButton.addEventListener("click", function(e){
        //You can load from a local webpage (e.g. a webpage in the Resources folder of your project)
        webView.url = "html/index.html";
        //or you can load an HTML-formatted string
        webView.html = "<h1>This is from a string</h1><p>Yes, it is</p>";
    });
    
    loadRemoteButton.addEventListener("click", function(e){
        webView.url = "http://www.google.com";
    });
    
    win.add(webView);
    win.add(loadLocalButton);
    win.add(loadRemoteButton);
    
    win.open();
    
    var win=tianium.UI.createWindow({
    标题:“加载本地和远程网页”,
    背景颜色:“FFFFFF”,
    });
    var loadLocalButton=Titanium.UI.createButton({
    标题:“加载本地”,
    身高:36,
    宽度:100,
    底图:12,
    左:12
    });
    var loadRemoteButton=Titanium.UI.createButton({
    标题:“加载远程”,
    身高:36,
    宽度:100,
    底图:12,
    右:12
    });
    var webView=Titanium.UI.createWebView({
    排名:0,
    左:0
    });
    loadLocalButton.addEventListener(“单击”),函数(e){
    //您可以从本地网页加载(例如,项目资源文件夹中的网页)
    webView.url=“html/index.html”;
    //也可以加载HTML格式的字符串
    webView.html=“这是一个字符串是的,它是”;
    });
    loadRemoteButton.addEventListener(“单击”),函数(e){
    webView.url=”http://www.google.com";
    });
    win.add(webView);
    添加(loadLocalButton);
    添加(loadRemoteButton);
    win.open();
    
    如何在托管服务器上维护HTML文件?是否有生成它们的程序,或者它们是手动安装在那里的。它们是否也保存在目录或数据库中?最后,您需要以多快的速度刷新更新的文件?例如,是否可以每天进行一次,或者是否需要立即进行?