Webview性能优化-小结

简介: Webview性能优化-小结

Webview性能优化-小结

1、Webview预加载


App启动就初始化一次WebView。副作用是WebView的初始化必须位于主线程,但主线程会阻塞其他业务代码导致ANR

public class App extends Application {
    @Override
    public void onCreate() {
        ...
        WebView webView = new WebView(this);  // 无脑初始化一次Webview
        webView.destroy();
        webView = null;
    }
}

2、WebView池


在首次后台创建WebView后并不销毁,而是存入备用池,当用户需要时直接取出来使用,这样可以将WebView初始化时间降到几乎为0


副作用是内存占用上,首个WebView会占用十几兆内存,非首个WebView内存占用0.2M左右内存。另外Android里WebView是和Activity进行绑定的,为了避免内存泄露,我们在预先创建的时候,借助Context的中间层MutableContextWrapper,使用MutableContextWrapper包裹applicationContext的方式去提前创建WebView,当使用时,将context置为activity的即可。


// 预创建WebView:
MutableContextWrapper contextWrapper = new MutableContextWrapper(applicationContext);
mPool[0] = new WebView(contextWrapper);
// 使用WebView
((MutableContextWrapper)webview.getContext()).setBaseContext(activityContext);

3、独立进程


Android允许一个app同时存在多个进程,可以根据需要把不同的模块放到不同进程中处理。

好处

1.有效增大App的运存,减少由webview引起的内存泄露对主进程内存的占用。

2.避免WebView的Crash影响App主进程的运行。

3.拥有对WebView独立进程操控权。

弊端

WebView进程与其他进程通讯的方式,把webview独立进程之后会发现,埋点功能和接收主进程数据都不正常了,这里就涉及到进程间通讯的问题了;

进程通讯大概就是这几种,aidl,messager,content provider,广播;

<!-- 在AndroidManifest中配置  android:process=":webview"      -->
<!--  **进程格式:包名+冒号+进程名    ----默认包名可以不写  格式:冒号+进程名  
:webview
**    -->
 <activity
          android:name=".ui.details.WebViewActivity"
            android:process=":webview"
             android:screenOrientation="portrait" />
目录
相关文章
|
1月前
|
JSON Dart UED
Flutter 应用程序性能优化建议
Flutter应用程序默认已经具有良好的性能,因此您只需要避免常见的陷阱,就可以获得出色的性能。 您设计和实现应用程序的用户界面的方式可能会对其运行效率产生重大影响。 本文这些最佳实践建议将帮助您编写性能最佳的Flutter应用程序。
Flutter 应用程序性能优化建议
|
1月前
|
设计模式 缓存 Android开发
深入理解Android应用性能优化
【2月更文挑战第18天】在移动开发领域,应用性能是用户体验的关键因素之一。特别是对于安卓设备而言,由于硬件配置的多样性,确保应用在不同设备上都能流畅运行是一项挑战。本文将探讨Android应用的性能优化策略,包括内存管理、UI渲染、多线程处理以及电池效率等方面。通过实例和最佳实践,我们将展示如何诊断性能瓶颈,并提供解决方案来改善应用响应速度和稳定性。
|
8月前
|
存储 缓存 移动开发
前端首屏性能优化
前端首屏性能优化
|
3月前
|
缓存 前端开发 JavaScript
前端如何性能优化
前端如何性能优化
20 0
|
9月前
|
Dart 监控 算法
Flutter性能优化分析
使用工具来分析Flutter的性能瓶颈
323 0
|
前端开发 JavaScript UED
前端常见的性能优化总结
前端常见的性能优化总结
119 0
|
前端开发
关于flutter列表的性能优化,你必须要了解的
这里是坚果前端小课堂,大家喜欢的话,可以关注我的公众号“坚果前端,”,或者加我好友,获取更多精彩内容 嵌套列表 - ShrinkWrap 与 Slivers
567 0
关于flutter列表的性能优化,你必须要了解的
|
存储 缓存 Dart
深入探索Flutter性能优化
# 目录 - 一、检测手段 - 1、Flutter Inspector - 2、性能图层 - 3、Raster 线程问题 - 4、UI 线程问题定位 - 5、检查多视图叠加的视图渲染开关 checkerboardOffscreenLayers - 6、检查缓存的图像开关 checkerboardRasterCacheImages - 二、关键优化指
1073 0
flutter中的列表的性能优化
我们接着上一期的继续今天的 内容 使用 Slivers 的列表列表 下面的代码构建了与之前相同的 UI,但这次它使用Slivers 而不是收缩包装ListView对象。本页的其余部分将引导您逐步完成更改。
348 0
|
Web App开发 Dart JavaScript
Flutter 性能优化的利器 —— Tracing
对于任何技术栈,都会有一个绕不过去的坎,那就是性能优化,而对于如何进行性能优化,最重要的前提就是需要知道具体的耗时分布,要知道耗时分布,就得打点(时间戳),一般的性能打点都是一些散点,比较凌乱,而本文要讲的 Tracing 则是性能打点的一种非常优雅的实现,它以瀑布流的形式呈现,非常直观,还有一个更直观的名字叫 火焰图 Tracing 顾名思义 —— 追踪每段耗时分布。
4345 0
Flutter 性能优化的利器 —— Tracing