【问题标题】:How to Save State on Cordova App Exit?如何在 Cordova 应用程序退出时保存状态?
【发布时间】:2016-07-27 03:17:32
【问题描述】:

我有一个 Cordova(离子)应用程序,可以方便地输入大量表单数据。此表单数据会保存到 localStorage,直到准备好发布。

所以让应用程序保持快速我不会每次都保存到磁盘并输入更改。当用户离开页面时,我正在保存。

我遇到的问题是用户可能会在一个页面上输入大量数据,然后在没有导航的情况下关闭应用程序。这是一个明显的用例,但我不确定如何在不经常返回磁盘的情况下进入它。

有什么方法可以在应用退出时快速保存?我知道我可以在科尔多瓦应用程序中收听“暂停”事件,但退出应用程序时是否相同?退出会发出“暂停”吗?

如果不是,有什么应对策略?

【问题讨论】:

    标签: android ios windows cordova ionic-framework


    【解决方案1】:

    TLDR:聆听暂停事件是正确的策略

    本机平台放置应用程序时触发暂停事件 进入后台,通常当用户切换到不同的 应用。 Source

    暂停事件是让您知道您的应用正在后台运行的唯一方法。在某些移动平台上,您甚至无法退出您的应用程序(例如在 iOS 中),因为该平台正在为您进行管理。所以收听暂停事件是你唯一的选择,因为一旦应用程序暂停,你就会失去控制。因此,监听暂停事件是正确的策略。

    见以下代码sn-p:

    document.addEventListener("pause", onPause, false);
    
    function onPause() {
        // Save the application state here
    }
    

    详细来说,我已经实现了一个带有保存方法的存储服务,该方法在 OnPause-handler 中调用。

    【讨论】:

      【解决方案2】:

      Pause 仅在进入后台时触发。为什么说“让应用程序保持快速”?它是 javascript,您可以在填充每个字段时将其保存到磁盘,并且它可以是 异步

      【讨论】:

        【解决方案3】:
        function onLoad() {
            document.addEventListener("deviceready", onDeviceReady, false);
            document.addEventListener("pause", onPause, false);
        
        function onDeviceReady() {
         
            var pageNow = document.getElementsByTagName(body);
            var currentPage = JSON.stringify(pageNow);
            localStorage.setItem("uiState", currentPage);
        
        }
        
        function onPause() {
        //retrieve info here
        
        var pageShow = document.getElementsByTagName(body);
        
        let techStack = localStorage.getItem("uiState");
        // JSON.parse(techStack); //unnecessary because the parser will detect HTML
        pageShow.innerHTML(techStack);
        
        }
        }
        

        您可以在任何元素中获取 UI 的当前状态,只需使用不同的选择器。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-09-05
          • 2014-10-28
          • 2011-08-07
          • 2015-11-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多