收藏
回答

Android 小程序 wx.getStorageSync() 获取数据失败

问题模块 框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
API和组件 小程序 Bug wx.getStorageSync() 客户端 6.7.3 2.3.0

- 当前 Bug 的表现(可附上截图)


- 预期表现

Android 微信客户端能够使用 wx.getStorageSync() 获取到保存在缓存里面的数据,实际情况不能获取到;

而 iOS 下同一段代码能够使用 wx.getStorageSync() 获取到数据


- 提供一个最简复现 Demo


最后一次编辑于  2018-10-08
回答关注问题邀请回答
收藏

2 个回答

  • 邓坤力
    邓坤力
    2018-10-09

    你好,这是一个已知问题,我们会尽快进行修复

    2018-10-09
    赞同
    回复 3
    • heaven
      heaven
      2018-11-20

      是否已经修复?在哪个版本修改的?华为手机很容易就出现了。。。

      2018-11-20
      回复
    • Luoooo
      Luoooo
      2018-12-10回复heaven

      我也出现这个问题,华为Nova。在开发工具可以拿到,但是真机调试发现拿不到。而且set不进去

      2018-12-10
      回复
    • Orange~胖子
      Orange~胖子
      01-15

      这个问题啥时候才能修复呢

      01-15
      回复
  • chenfx
    chenfx
    2018-10-08

    自己回答一波吧,出现这个问题的原因找了好久终于找到了。。。


    出现此问题的业务场景:在小程序 a 页面上使用 api 打开系统相册选择图片文件后保存该文件的本地路径到缓存,选择文件完成后跳转至 b 页面读取刚才的缓存地址并展示;


    出现bug的场景:Android 机器上在 a 页面选择完图片后跳转到 b 页面始终得到的缓存数据为空,而 iOS 机器上能成功获取缓存数据;


    最终找到的问题:在 a 页面上的 onShow 生命周期函数中重置了一次缓存数据导致了此问题;那为什么在 a 页面的生命周期函数 onShow 中重置缓存数据只是影响了 Android 机型而 iOS 机型没有受到影响,通过真机调试发现 Android 和 iOS 机型在调取系统相册的过程中处理当前页面的方式不同,在 a 页面打开系统相册,Android 会先将 a 页面 onHide ,在选取图片成功后再 onShow 一次,而 iOS 不会执行此操作步骤,所以导致了此问题。。


    总结原因。。还是由于 Android 和 iOS 处理的方式不一样造成的这种问题 ……

    2018-10-08
    赞同 2
    回复 2
    • 阮连军
      阮连军
      2018-10-17

      解决办法,你是怎么解决的

      2018-10-17
      回复
    • chenfx
      chenfx
      2018-11-05回复阮连军

      最后没在 onShow 生命周期函数里面处理这件事情

      2018-11-05
      回复