【问题标题】:Restoring Application State on Phonegap在 Phonegap 上恢复应用程序状态
【发布时间】:2013-07-31 05:11:03
【问题描述】:

我已经开发了一个带有 phonegap 的 Android 应用程序,我的应用程序需要在切换按钮上进行切换,然后用户可以关闭该应用程序并在后台服务中运行它。我的问题是当我关闭应用程序并再次返回应用程序时,它会在切换按钮关闭的情况下恢复到初始状态。 那么,我的问题是我们如何在 android 和 phonegap 上保存/恢复应用状态?

我已阅读此 Save & restoring WebView in an embedded PhoneGap app ,但我仍然不了解 restoreFromPreferences()saveToPreferences(out) 有人可以帮忙吗?

*抱歉英语不好

【问题讨论】:

    标签: android cordova


    【解决方案1】:

    正如@geet 所说,localStorage 是您存储数据并在以后检索它们所需要的。 根据 Phonegap 网站,localstorage 提供对 W3C 存储接口的访问。你可以在这里阅读:http://dev.w3.org/html5/webstorage/#the-localstorage-attribute

    要保存切换按钮的位置,我就是这样做的:

    <script>
    
    function onDeviceReady() {
    
    // Set togglebutton to false default
    var togglebutton = window.localStorage.getItem("togglebutton");
    if (togglebutton==null) window.localStorage.setItem("togglebutton", 'false');
    
    // Set default state
    if (window.localStorage.getItem("togglebutton")=='true') {
        $('#onoffswitch').attr("checked", "checked");
    }
    
    // Switch onoffswitch event
    $('#onoffswitch').on('change', function(){
        if ($(this).prop('checked')) {
            window.localStorage.setItem("togglebutton", 'true');
        } else {
            window.localStorage.setItem("togglebutton", 'false');
        }
    });
    
    }
    
    </script>
    

    确保在您的 HTML 中,您的切换元素(形成一个复选框)默认未选中:

    <input type="checkbox" name="onoffswitch" id="onoffswitch">
    

    关于暂停和恢复,您可以在调用这些事件时执行操作。为此:

    <script>
        document.addEventListener("resume", yourCallbackFunction, false);
        document.addEventListener("pause", yourCallbackFunction, false);
    </script>
    

    【讨论】:

    【解决方案2】:

    你可以在你的JS的localstorage中存储任何数据。

    例如

    保存var username的值。

    localStorage.setItem("username",edited_name);
    

    检索

    var getUser=localStorage.getItem("username");
    

    希望对你有帮助!!

    【讨论】:

    • 你能解释一下怎么做吗?是否在 Phonegap 上使用 Pause 和 Resume 事件?
    • 你应该知道它会将所有值转换为字符串,然后存储为字符串。
    【解决方案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 的当前状态,只需使用不同的选择器。

    稍后将更新此答案以合并 SQL

    【讨论】:

      猜你喜欢
      • 2013-02-24
      • 1970-01-01
      • 2023-03-03
      • 1970-01-01
      • 1970-01-01
      • 2014-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多