阿峰
阿峰
  • 发布:2015-09-06 17:36
  • 更新:2017-03-30 14:53
  • 阅读:3433

【BUG提交】plus.storage.getItem 如果app放在后台运行 是取不到值的吗

分类:HTML5+

plus.storage.getItem 如果放在后台运行(如 打开别的app,html5+的app会转入后台运行) 是取不到值的吗
为什么 我取不到?应该是可以取到的吧,目前暂时只能用localStorage来替代。

顺便说明一下,放到后台以后,页面上的 定时器 竟然是可以允许的,哈哈·

setInterval(function() {
var dateNow = moment(new Date()).format('YYYY/MM/DD');
var asyc_mark = plus.storage.getItem(KEY_Buidings_asyc_mark);
if (Date.parse(asyc_mark) >= Date.parse(dateNow)) {
console.log('不需要同步' + asyc_mark);
return callback(null);
}
console.log(' 准备同步' +asyc_mark+','+ dateNow);

}, 10*1000);//1分钟

下面这样的代码 一旦程序切到后台运行了,就会一直执行这段代码
console.log(' 准备同步' +asyc_mark+','+ dateNow);

查看log 原来是 var asyc_mark = plus.storage.getItem(KEY_Buidings_asyc_mark); 这个取不到值。

这个原来还有这个问题吗???

2015-09-06 17:36 负责人:无 分享
已邀请:
RayZhao

RayZhao

同问

Android_磊子

Android_磊子

请问是安卓还是IOS平台。

阿峰

阿峰 (作者)

安卓平台 IOS平台都 一样的·

  • Android_磊子

    var KEY_Buidings_asyc_mark = "KEY_Buidings_asyc_mark";  
    var index = 1;
    setInterval(function() {
    var asyc_mark = plus.storage.getItem(KEY_Buidings_asyc_mark);
    if (index && index % 5 != 0) {
    console.log('不需要同步' + index);
    } else{
    //index 为 5的正数倍时才需要同步
    plus.storage.setItem(KEY_Buidings_asyc_mark,index);
    console.log('原来的值' + asyc_mark + ';准备同步' + index);
    }
    index++;
    }, 10*1000);//10秒钟

    这样写是没有问题,可能跟你setItem的value值有关系,是否有特殊字符?之前遇到过特殊字符时会有个bug,此bug已经修改,等待发版更新,注意HBuilder中releaseNote

    2015-12-22 12:30

  • 阿峰 (作者)

    没有特殊字符····


    value = 1或者0


    这个应该不算特殊字符吧·

    2015-12-22 12:44

  • x***@163.com

    回复 Android_磊子:setInterval切换到后台可以运行,但是打包出来的app貌似在后台就不能运行了 怎么解决

    2016-05-27 19:40

  • Android_磊子

    使用HBuilder 真机调试会有问题吗,HBuilder使用的runtime基座就是云打包出来的。

    2016-05-30 11:34

  • 阿峰 (作者)

    我把 1,0 转化成字符串 存储起来 问题解决了 - -!

    2016-10-30 19:00

ali

ali

KEY_Buidings_asyc_mark 这个是啥?

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