在Phonegap上恢复应用程序状态

时间:2013-07-31 05:11:03

标签: android cordova

我开发了一个带有phonegap的Android应用程序,我的应用程序需要在切换按钮上切换,然后用户可以关闭应用程序并在后台服务中运行它。我的问题是当我关闭应用程序并再次返回应用程序时,它会切换到关闭切换按钮的初始状态。 所以,我的问题是如何在android和phonegap上保存/重新调整app状态?

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

*抱歉英文不好

3 个答案:

答案 0 :(得分:5)

正如@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>

答案 1 :(得分:0)

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

e.g

保存var username的价值。

localStorage.setItem("username",edited_name);

要追溯

var getUser=localStorage.getItem("username");
希望它对你有帮助!!

答案 2 :(得分:0)

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