2014-12-02 72 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