Wangqian777
Wangqian777
  • 发布:2021-06-05 18:42
  • 更新:2022-03-14 11:46
  • 阅读:399

请问安卓在使用Sqlite时,后台静默缓存数据时app点击按钮没反应。必要数据缓存完成之后才能操作app。

分类:uni-app
function cacheData() {  
    if (!isOpen()) {  
        openSqlite()  
    }  
    console.log("开始查询后台数据库:" + getNowDate());  
    createTables(sql.creatTableSql);  
    //缓存NFC绑定信息  
    http.post(common.clmkzhajUrl + 'getAllNFCBind').then(res => {  
        let array = res.data;  
        console.log("查询后台数据库结束:" + getNowDate());  
        //删除历史绑定信息  
        deleteData("ZHAJ_NFCBIND").then(res => {  
            if (res.state == 1) {  
                //保存数据  
                console.log("开始插入:" + getNowDate());  
                insertData(array, 'ZHAJ_NFCBIND').then(res => {  
                    console.log("插入结束:" + getNowDate());  
                })  
                console.log("测试方法是否异步");  
            }  
        });  
    });  
}
function insertData(dataArray, tableName) {  
    //判断有没有传参  
    if (dataArray != undefined && dataArray.length > 0) {  
        let sqlArray = [];  
        let sql="";  
        let value="";  
        for (let i = 0; i < dataArray.length; i++) {  
            let keyStr = "";  
            let valueStr = "";  
            for (let key in dataArray[i]) {  
                keyStr += key + ',';  
                value=dataArray[i][key].toString().replace(/'/g,"''");  
                valueStr += `'${value}',`;  
            }  
            keyStr = keyStr.substring(0, keyStr.length - 1);  
            valueStr = valueStr.substring(0, valueStr.length - 1);  
            sqlArray.push(`insert into ${tableName}(${keyStr}) values(${valueStr})`);  
        }  
        //开启事务  
        transactionDB("begin");  
        return new Promise((resolve, reject) => {  
            plus.sqlite.executeSql({  
                name: dbName,  
                sql: sqlArray,  
                success(e) {  
                    transactionDB("commit");  

                    resolve({  
                        "state": 1  
                    });  
                },  
                fail(e) {  
                    console.log(e)  
                    transactionDB("rollback");  
                    resolve({  
                        "state": 0  
                    });  
                }  
            })  
        })  
    } else {  
        return new Promise((resolve, reject) => {  
            resolve({  
                "state": 0  
            });  
        })  
    }  
}
2021-06-05 18:42 负责人:无 分享
已邀请:
Wangqian777

Wangqian777 (作者)

控制台打印如下

m***@protonmail.com

m***@protonmail.com

我也遇到了同样的问题,批量插入很耗时,期间不能操作app 卡死 ,请问解决了吗

该问题目前已经被锁定, 无法添加新回复