2014-12-02 73 views
1

我们观察到,在某段时间访问JSONStore API的挂起很长时间,为了使其工作,我们必须再次调用该函数,或者必须将应用带到背景&再次带到前台。检索数据时JSON存储挂起

注意:当应用程序面临此问题时,行为是相同的,直到我们重新安装应用程序或重新启动设备。

这似乎没有任何适当的场景,我们搜索了很多文章,但没有找到任何解决方案,任何解决方案都是值得欢迎的。

我们在S5和S4等Android设备上观察到此问题。

这里是我的代码片段:

function getWidgets(w_id, getWidgetsSuccessCallback, getWidgetsFailureCallback) { 

var query = { user_id : w_id }; 
var options = {}; 

WL.JSONStore.get(StorageCollections.widgets).find(query, options) 
.then(function(arrayResults) { 
    var count = arrayResults.length; 

    Logger.debug("getWidgets: success, count: " + count); 

    ... 

    getWidgetsSuccessCallback(widgets); 
}) 
.fail(function(errorObject) { 
    Logger.error("getWidgets: failed, error: " + JSON.stringify(errorObject)); 
    getWidgetsFailureCallback(errorObject); 
});} 

日志时,一切工作正常http://pastebin.com/NVP8ycTG

日志访问JSON店内挂起时,它会工作,只有当拍摄背景&带回前景再次http://pastebin.com/eYzx57qC应用

JSON存储初始化如下

var collections = { 
// User 
user: { 
    searchFields: { 
     user_id    : 'string', 
     user_name   : 'string', 
     first_name   : 'string', 
     last_name   : 'string', 
    }   
} 
}}; 


// Storage encryption 
var options = {}; 
if (key) { 
    options.password = key; 
    options.localKeyGen = true; 
} 

// Open the collection 
var promise = WL.JSONStore.init(collections, options) 
.then(function() { 
    Logger.debug("initializeAppStorage: " + JSON.stringify(collections) + " completed"); 
    initAppStorageSuccessCallback(true); 
    return true; 
}) 
// Handle failure 
.fail(function(errorObject) { 
    Logger.error("initializeAppStorage: failed, error: " + errorObject.toString()); 
    initAppStorageFailureCallback(errorObject.toString()); 
    return false; 
}); 
return promise; 

谢谢。

+0

您如何初始化这个店? – 2014-12-02 05:22:57

+0

是的,我编辑了我的评论;我们正在如上所述进行初始化。 – penguin 2014-12-02 06:24:45

+0

什么是StorageCollections.widgets? – 2014-12-02 06:35:53

回答

0

试试这个:

function getWidgets(w_id, getWidgetsSuccessCallback, getWidgetsFailureCallback) { 

var query = { key : w_id }; 
var options = {}; 

WL.JSONStore.get(StorageCollections.widgets).find(query, options) 
.then(function(arrayResults) { 
    var count = arrayResults.length; 

    Logger.debug("getWidgets: success, count: " + count); 

    ... 

    getWidgetsSuccessCallback(widgets); 
}) 
.fail(function(errorObject) { 
    Logger.error("getWidgets: failed, error: " + JSON.stringify(errorObject)); 
    getWidgetsFailureCallback(errorObject); 
});} 
+0

我看你已经改变了'query' var。我已经编辑过我的帖子,以反映相同的情况,我的一个错字。 – penguin 2014-12-02 06:29:31