uni-app nvue list 嵌套 waterfall 滑动过程中有概率崩溃

uni-app nvue list 嵌套 waterfall 滑动过程中有概率崩溃

开发环境 版本号 项目创建方式
Mac 14.6 HBuilderX

产品分类:uniapp/App
PC开发环境操作系统:Mac
HBuilderX类型:正式
手机系统:Android
手机系统版本号:Android 12
手机厂商:华为
手机机型:mate40 pro
页面类型:vue
vue版本:vue2
打包方式:云端

示例代码:

崩溃日志:  
com.taobao.weex.common.WXRuntimeException: getImgLoaderAdapter() == null at com.taobao.weex.ui.component.WXImage.recycled(Unknown Source:58) at io.dcloud.feature.uniapp.ui.component.AbsVContainer.recycled(Unknown Source:37) at io.dcloud.feature.uniapp.ui.component.AbsVContainer.recycled(Unknown Source:37) at io.dcloud.feature.uniapp.ui.component.AbsVContainer.recycled(Unknown Source:37) at io.dcloud.feature.uniapp.ui.component.AbsVContainer.recycled(Unknown Source:37) at io.dcloud.feature.uniapp.ui.component.AbsVContainer.recycled(Unknown Source:37) at io.dcloud.feature.uniapp.ui.component.AbsVContainer.recycled(Unknown Source:37) at io.dcloud.feature.uniapp.ui.component.AbsVContainer.recycled(Unknown Source:37) at io.dcloud.feature.uniapp.ui.component.AbsVContainer.recycled(Unknown Source:37) at com.taobao.weex.ui.view.listview.adapter.ListBaseViewHolder.recycled(Unknown Source:18) at com.taobao.weex.ui.component.list.BasicListComponent.onViewRecycled(Unknown Source:30) at com.taobao.weex.ui.component.list.BasicListComponent.onViewRecycled(Unknown Source:2) at com.taobao.weex.ui.view.listview.adapter.RecyclerViewBaseAdapter.onViewRecycled(Unknown Source:4) at com.taobao.weex.ui.view.listview.adapter.RecyclerViewBaseAdapter.onViewRecycled(Unknown Source:2) at androidx.recyclerview.widget.RecyclerView$Recycler.dispatchViewRecycled(RecyclerView.java:6769) at androidx.recyclerview.widget.RecyclerView$Recycler.addViewHolderToRecycledViewPool(RecyclerView.java:6538) at androidx.recyclerview.widget.RecyclerView$Recycler.recycleCachedViewAt(RecyclerView.java:6419) at androidx.recyclerview.widget.RecyclerView$Recycler.recycleViewHolderInternal(RecyclerView.java:6468) at androidx.recyclerview.widget.RecyclerView$Recycler.recycleView(RecyclerView.java:6369) at androidx.recyclerview.widget.RecyclerView$LayoutManager.removeAndRecycleView(RecyclerView.java:8901) at androidx.recyclerview.widget.StaggeredGridLayoutManager.recycleFromEnd(StaggeredGridLayoutManager.java:1959) at androidx.recyclerview.widget.StaggeredGridLayoutManager.recycle(StaggeredGridLayoutManager.java:1788) at androidx.recyclerview.widget.StaggeredGridLayoutManager.fill(StaggeredGridLayoutManager.java:1718) at androidx.recyclerview.widget.StaggeredGridLayoutManager.scrollBy(StaggeredGridLayoutManager.java:2180) at androidx.recyclerview.widget.StaggeredGridLayoutManager.scrollVerticallyBy(StaggeredGridLayoutManager.java:2039) at androidx.recyclerview.widget.RecyclerView.scrollStep(RecyclerView.java:1841) at androidx.recyclerview.widget.RecyclerView$ViewFlinger.run(RecyclerView.java:5302) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1599) at android.view.Choreographer.doCallbacks(Choreographer.java:1263) at android.view.Choreographer.doFrame(Choreographer.java:1122) at android.view.Choreographer$FrameHandler.handleMessage(Choreographer.java:1400) at android.os.Handler.dispatchMessage(Handler.java:117) at android.os.Looper.loopOnce(Looper.java:205) at android.os.Looper.loop(Looper.java:293) at android.app.ActivityThread.loopProcess(ActivityThread.java:9986) at android.app.ActivityThread.main(ActivityThread.java:9975) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:586) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1240)

操作步骤:

nvue  list 嵌套 waterfall  

预期结果:

正常

实际结果:

滑动概率崩溃

bug描述:

nvue  list 嵌套 waterfall  滑动过程中有概率崩溃

更多关于uni-app nvue list 嵌套 waterfall 滑动过程中有概率崩溃的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

weex已经淘汰,nvue不再维护。建议改用vue,或者升级uni-app x。如果坚持nvue,那可能需要点论坛右上角的付费技术支持解决

更多关于uni-app nvue list 嵌套 waterfall 滑动过程中有概率崩溃的实战教程也可以访问 https://www.itying.com/category-93-b0.html


有没有解决bug的方向 是因为 list 嵌套waterfall 回收的问题吗

在处理 uni-appnvue 列表嵌套瀑布流(waterfall)组件在滑动过程中可能出现的崩溃问题时,通常这类问题涉及到内存管理、渲染性能以及组件间通信的异常。虽然具体崩溃原因可能多种多样,但以下是一些可能的代码示例和调优策略,旨在帮助你定位并解决问题。

1. 优化列表渲染性能

确保列表的渲染尽可能高效,避免在滑动过程中频繁重绘。可以使用虚拟列表技术来减少渲染的DOM节点数量。

// 虚拟列表示例
<template>
  <list :space="20" :height="windowHeight">
    <cell v-for="(item, index) in visibleItems" :key="index">
      {{ item.name }}
    </cell>
  </list>
</template>

<script>
export default {
  data() {
    return {
      windowHeight: 0,
      allItems: [],
      visibleItems: []
    };
  },
  mounted() {
    this.windowHeight = uni.getSystemInfoSync().windowHeight;
    this.loadItems();
    this.$watch('scrollPosition', this.handleScroll);
  },
  methods: {
    loadItems() {
      // 模拟加载数据
      this.allItems = Array.from({ length: 1000 }, (_, i) => ({ name: `Item ${i + 1}` }));
      this.computeVisibleItems();
    },
    computeVisibleItems() {
      // 根据滚动位置计算可见项
      const startIndex = Math.floor(this.scrollPosition / this.windowHeight) * 3; // 假设每屏显示3项
      const endIndex = startIndex + 6; // 预留一些缓冲
      this.visibleItems = this.allItems.slice(startIndex, endIndex);
    },
    handleScroll(newVal) {
      this.scrollPosition = newVal;
      this.computeVisibleItems();
    }
  }
};
</script>

2. 监控内存使用

在滑动过程中监控应用的内存使用情况,确保没有内存泄漏。可以使用 uni.getMemoryInfoSync() 来获取当前内存信息。

setInterval(() => {
  const memoryInfo = uni.getMemoryInfoSync();
  console.log('Memory Usage:', memoryInfo);
}, 5000); // 每5秒检查一次内存使用情况

3. 错误捕获和日志记录

增加全局错误捕获,记录异常信息,有助于后续分析崩溃原因。

uni.onError((err) => {
  console.error('App Error:', err);
  // 发送错误日志到服务器
});

4. 更新uni-app和依赖库

确保你使用的 uni-app 和相关依赖库是最新版本,因为新版本中可能已经修复了一些已知的bug。

通过上述方法,你可以更有效地定位和解决 uni-appnvue 列表嵌套瀑布流组件在滑动过程中的崩溃问题。如果问题依旧存在,建议详细检查崩溃日志,或者向 uni-app 社区寻求更具体的帮助。

回到顶部