聪大帅
聪大帅
  • 发布:2023-01-03 10:46
  • 更新:2024-09-30 09:46
  • 阅读:1048

App在Android上使用web-view闪退

分类:uni-app

uniSDK:3.6.5
电脑系统:Mac
手机:vivo S15(大部分手机都会触发)
问题描述:
在App中打开从列表页面打开这个加载web-view的页面,正常打开,重复多次打开不同的加载web-view的页面,在差不多9-20次左右就会触发闪退,跟web-view的页面大小有关系,可以试一下https://boardmix.cn/app/网站创建的文件

地址例子:
在web上打开https://boardmix.cn/app/,创建文件,
打开文件后地址就变成https://boardmix.cn/app/editor/xtHsIxc_72Rt9QWLB9c95g,
复制地址变成https://boardmix.cn/app/editor/xtHsIxc_72Rt9QWLB9c95g?isApp=1在App上打开
demo

<template>  
    <view>  
        <web-view ref="webview"  :src="editorUrl"   @message='onMessage' class="webview"></web-view>  
    </view>  
</template>  
<script>  
import { computed, onMounted, ref,defineComponent } from "vue";;  

let wv:PlusWebviewWebviewObject|null = null;  
let timer:NodeJS.Timeout|null = null;  

export default defineComponent({  
    data() {  
        return {  

        }  
    },  
    setup(props:any){  
        return {  
            editorUrl:`https://boardmix.cn/app/editor/${props.fileKey}?isApp=1`,  
            fileKey:props.fileKey||'',  
            styles:{  
                progress:{  
                    color: '#FF3333'  
                },  
                width:"750rpx",  
                height:"600rpx"  
            }  

        }  

    },  
    onLoad(){  
        this.init()  

    },  
    onShow(){  
        console.log("====编辑页-onShow====");  

    },  
    onHide() {  
        console.log("执行onHide清除")  
        timer&&clearTimeout(timer);  
        wv = null;  
        timer = null  
    },  
    onUnload(){  
        console.log("执行honUnload清除");  
        timer&&clearTimeout(timer);  
        wv = null;  
        timer = null  
    },  
    onResize() {  
        wv&&wv.setStyle({  
            top:this.getBarHeight()+'',  
            left:"0",  
            bottom:"0",  
            right:"0"  

        })  
    },  
    methods:{  
        onMessage(event:any){  
            console.log("====editor==",event)  
            let data = event.detail.data;  
            this.handleMessage(data[0])  
        },  
        postMessage(key: string | number, data?: any) {  
            // 推送消息  
            // wv&&wv.evalJS(`onMessageFromUniapp(${key},${JSON.stringify(data)})`);  
        },  
        init(){  
            this.getVw()  
        },  
        handleMessage(data) {  
            console.log("message key", data);  
            // 业务处理  

        },  
        getVw(){  
            let currentWebview = this.$scope.$getAppWebview();  
            if(currentWebview.children()&&currentWebview.children()[0]){  
                wv = currentWebview.children()[0] as PlusWebviewWebviewObject;  
                wv.setStyle({  
                    top:this.getBarHeight()+'',  
                    left:"0",  
                    bottom:"0",  
                    right:"0"  
                });  
            }else{  
                timer&&clearTimeout(timer);  
                timer = setTimeout(()=>{  
                    this.getVw()  
                },50)  
            }  
        },  
        getBarHeight(){  
            return uni.getSystemInfoSync().statusBarHeight || 0;  
        }  
    }  

})  
</script>  

<style scoped>  
.webview{  
    width: 750rpx;  
    height: 600px;  
}  
</style>

我在Android studio上获取的调试日志

2023-01-03 10:46 负责人:无 分享
已邀请:
DCloud_Android_ST

DCloud_Android_ST

看日志是系统浏览器内核崩溃了 大概率是内存溢出了 你重复打开的页面有关闭吗

  • 聪大帅 (作者)

    是用的web-view组件,关闭当前页面回退到上一页列表页,有关闭的

    2023-01-03 15:50

  • DCloud_Android_ST

    回复 f***@300624.cn: 提供个示例demo 我们这边测试看看

    2023-01-03 16:40

  • 聪大帅 (作者)

    回复 DCloud_Android_ST: 可以直接给你Apk吗

    2023-01-03 19:02

  • DCloud_Android_ST

    回复 f***@300624.cn: HX测试demo 附近上传

    2023-01-03 19:45

  • 聪大帅 (作者)

    回复 DCloud_Android_ST: 内部不允许上传代码,要内审比较麻烦,我搞定了在发demo吧

    2023-01-10 17:25

z***@yeah.net

z***@yeah.net

解决了吗

要回复问题请先登录注册