我正在构建一个包含WebView运行一些JavaScript代码的应用程序.JavaScript代码非常繁重,可能需要大量内存.
有时,所需的内存量超过了JavaScript可能需要的数量,并且崩溃了导致我的应用崩溃的WebView的Chromium进程.
我onMemoryTrim在我的应用程序中监听- 但在这种情况下,在内存超过1GB的设备上永远不会调用它.(甚至没有TRIM_MEMORY_RUNNING_LOW).
有没有什么方法可以检测到我的WebView内存不足并杀死它或让它知道(所以它可以释放内存)?
我试过了民意调查,performance.memory但没有奏效.如果在其中执行,则以下脚本会崩溃WebView:
var a = [];
var kek = () => {
var b = [];
for(var i = 0; i < 1024 * 1024 * 2; i++) b.push(Math.random());
return b;
}
var ival = setInterval(() => {
let m = performance.memory;
if(m.jsHeapSizeLimit - m.usedJSHeapSize < 1e5) {
console.log("Memory limited")
} else {
a.push(kek());
}
});
Run Code Online (Sandbox Code Playgroud)
有没有办法检测内存即将用完所以我可以优雅地处理它没有应用程序崩溃?
我在这个案子上被困了一会儿.
我有一个webview Android 4.4.3,我有一个float32array包含二进制数据的webapp .我想array通过绑定的函数将其传递给Java Android JavascriptInterface.然而,这似乎是在Java中,我只能通过原始的类型,如String,int等...
有没有办法给Java这个arrayBuffer?
谢谢 !