当前位置: 首页 > news >正文

用什么做网站方便做建材交易网站的上市公司

用什么做网站方便,做建材交易网站的上市公司,免费培训机构,万维网站续费多少一年文章目录 Android 性能优化之布局优化绘制原理双缓冲机制布局加载原理检测耗时常规方式AOP方式获取控件加载耗时 布局优化AsyncLayoutInflater方案Compose方案减少布局层级和复杂度避免过度绘制 Android 性能优化之布局优化 绘制原理 CPU#xff1a;负责执行应用层的measure… 文章目录 Android 性能优化之布局优化绘制原理双缓冲机制布局加载原理检测耗时常规方式AOP方式获取控件加载耗时 布局优化AsyncLayoutInflater方案Compose方案减少布局层级和复杂度避免过度绘制 Android 性能优化之布局优化 绘制原理 CPU负责执行应用层的measure、layout、draw等操作将绘制的数据交给GPU处理。GPU进一步处理数据并缓存数据。屏幕由一个个像素点组成的以固定的频率16.6ms1秒60帧从缓冲区获取数据填充像素点。 双缓冲机制 GPU 向缓冲区写入数据的同时屏幕也在向缓冲区读取数据可能会导致屏幕上就会出现一部分是前一帧的画面一部分是另一帧的画面。 因此 Android 系统使用双缓冲机制GPU 只向Back Buffer中写入绘制数据且 GPU 会定期交换Back Buffer和Frame Buffer交换的频率也是60次/秒这就与屏幕的刷新频率保持了同步。 GPU 向 Back Buffer 写入数据时系统会锁定 Back Buffer如果布局比较复杂或设备性能较差时CPU 不能保证16.6ms内完成计算因此到了 GPU 交换两个 Buffer 的时间点GPU 就会发现 Back Buffer 被锁定了会放弃这次交换也就是掉帧。 布局加载原理 解析XML文件涉及 IO 操作。通过 createViewFromTag() 创建View用到了反射机制。 检测耗时 常规方式 public class MainActivity extends AppCompatActivity {Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);long start System.currentTimeMillis();setContentView(R.layout.activity_main);long time System.currentTimeMillis() - start;Log.e(TAG, setContentView耗时 time);} }AOP方式 使用第三方框架 https://github.com/FlyJingFish/AndroidAOP 定义切面类 AndroidAopMatchClassMethod(targetClassName androidx.appcompat.app.AppCompatActivity,methodName {setContentView},type MatchType.SELF ) public class MatchSetContentView implements MatchClassMethod {NullableOverridepublic Object invoke(NonNull ProceedJoinPoint proceedJoinPoint, NonNull String methodName) {Class? targetClass proceedJoinPoint.getTargetClass();long start System.currentTimeMillis();proceedJoinPoint.proceed();long time System.currentTimeMillis() - start;Log.e(TAG, targetClass.getSimpleName() # methodName 耗时 time);return null;} }获取控件加载耗时 public class MainActivity extends AppCompatActivity {Overrideprotected void onCreate(Bundle savedInstanceState) {LayoutInflaterCompat.setFactory2(getLayoutInflater(), new LayoutInflater.Factory2() {NullableOverridepublic View onCreateView(Nullable View parent, NonNull String name, NonNull Context context, NonNull AttributeSet attrs) {long start System.nanoTime();View view getDelegate().createView(parent, name, context, attrs);Log.e(TAG, name 耗时 (System.nanoTime() - start) ns);return view;}NullableOverridepublic View onCreateView(NonNull String name, NonNull Context context, NonNull AttributeSet attrs) {return null;}});super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);} }布局优化 优化思路 IO 优化。反射优化。 AsyncLayoutInflater方案 AsyncLayoutInflater 是 Android 提供的一个异步加载布局的类它允许在 UI 线程之外加载和解析 XML 布局文件减少主线程的阻塞从而提高应用的响应性能。 添加依赖库 implementation androidx.asynclayoutinflater:asynclayoutinflater:1.0.0使用 new AsyncLayoutInflater(this).inflate(R.layout.activity_main, null, new AsyncLayoutInflater.OnInflateFinishedListener() {Overridepublic void onInflateFinished(NonNull View view, int resid, Nullable ViewGroup parent) {setContentView(view);} });缺点 兼容性一般。牺牲了易用性。 Compose方案 新一代UI声明式UI。去掉了 XML。 减少布局层级和复杂度 使用 ConstraintLayout 可以实现扁平化布局减少层级。使用 RelativeLayout 减少嵌套。嵌套的 LinearLayout 尽量少用 weight 属性因为 weight 会重复测量。使用 merge 标签减少布局层级。使用 ViewStub 标签进行延迟加载。使用 include 标签提取复用布局。 避免过度绘制 去掉多余的背景色减少复杂 shape 的使用。避免层级叠加。自定义 View 使用 clipRect 屏蔽被遮盖 View 绘制。
http://www.dnsts.com.cn/news/226563.html

相关文章:

  • 上海住房和城乡建设网站网络公司经营范围写电子商务
  • wordpress建站服务凤凰手机网官网
  • 杭州网站建设河南建筑材料价格信息网
  • 如何加快门户网站建设方案京东网上商城购物平台
  • 做网站维护承包合同宝塔一键迁移WordPress
  • 培训学校设计seo外包推广
  • 做班级的活动的网站北海做网站有哪家好
  • 网站正在建设中永久天元建设集团有限公司六大板块
  • 怎样查看网站制作公司精准营销的概念
  • 亳州做商标网站的公司wordpress mysql缓存
  • wordpress获取文章地址哈尔滨seo优化科技
  • 网站建设的类型或分类长春市长春网站建设哪家好
  • seo营销型网站推广手机网站导航页
  • Django 个人博客网站开发宠物网站页面设计理念
  • 做个网站大约多少钱免费网页软件
  • 集团公司网站建设网站建设签约
  • 猎头公司前十名有哪些一个网站可以优化多少关键词
  • 网站流量用完了网站建设顶部图片
  • 做网站就深圳影视广告公司
  • 平台类网站费用中铁建设集团有限公司有多少个局
  • 做淘客网站怎么广州:推动优化防控措施落地
  • 记事本怎样做网站网站采用哪种开发语言
  • 佛山建设网站织梦xml网站地图
  • 电子商务网站建设规划的论文怎么做照片网站
  • 建筑网站建设网络营销网站建设的角度
  • 养生网站源码下载wordpress添加快速链接
  • 服务好的企业建站做个企业网网站怎么做
  • 网站设计时尚宁夏城乡和住房建设厅网站
  • 公司微网站建设方案网站建设与推广策划书
  • wordpress free网站代码如何做优化