美文网首页
Android-杂项

Android-杂项

作者: 小呀么小黄鸡 | 来源:发表于2021-03-17 23:45 被阅读0次

    sharedPreferences的apply和commit区别,多进程下是否可以使用

    https://www.jianshu.com/p/918240c01644
    apply是异步的,commit是同步的
    apply是先将数据写入到内存然后单线程地完整写入文件,commit则是直接写入文件,
    apply是void类型,commit返回boolean,是否成功写入
    多线程安全,但多进程下不可用,

    卡顿优化(如果头条APP卡了,可能发生的原因有哪些),布局优化(include、viewStub、merge 的使用和区别),自己做过哪些优化,异常机制,代码混淆有了解过吗

    RecyclerView的预取机制与缓存机制

    RecycleView的四级缓存——结构
    mAttachedScrap(屏幕内):用于屏幕内itemview快速重用,不需要重新createView和bindView
    mCacheViews(屏幕外):保存最近移出屏幕的ViewHolder,包含数据和position信息,当往回滑动时,能直接复用ViewHolder数据,不需要重新bindView。
    mViewCacheExtension(自定义缓存):不直接使用,需要用户自定义实现,默认不实现
    mRecyclerPool(缓存池):当cacheView满了后或者adapter被更换,将cacheView中移出的ViewHolder放到Pool中,放之前会把ViewHolder数据清除掉,所以复用时需要重新bindView

    保存缓存流程:

    https://blog.csdn.net/jb_home/article/details/111647931
    插入或是删除itemView时,先把屏幕内的ViewHolder保存至AttachedScrap中
    滑动屏幕的时候,先消失的itemview会保存到CacheView,CacheView大小默认是2,超过数量的话按照先入先出原则,移出头部的itemview保存到RecyclerPool缓存池(如果有自定义缓存就会保存到自定义缓存里),RecyclerPool缓存池会按照itemview的itemtype进行保存,每个itemType缓存个数为5个,超过就会被回收。

    获取缓存流程:

    AttachedScrap中获取,通过pos匹配holder——>获取失败,从CacheView中获取,也是通过pos获取holder缓存 ——>获取失败,从自定义缓存中获取缓存——>获取失败,从mRecyclerPool中获取 ——>获取失败,重新创建viewholder——createViewHolder并bindview。

    WebView如何做资源缓存?WebView的5种缓存模式

    LOAD_NO_CACHE: 不使用缓存,只从网络获取数据
    LOAD_CACHE_ONLY: 不使用网络,只读取本地缓存数据
    LOAD_DEFAULT: 根据cache-control决定是否从网络上取数据
    LOAD_CACHE_NORMAL: API level 17中已经废弃, 从API level 11开始作用同LOAD_DEFAULT模式
    LOAD_CACHE_ELSE_NETWORK,只要本地有,无论是否过期,或者no-cache,都使用缓存中的数据

    WebView和JS交互的几种方式与拦截方法。

    https://www.jianshu.com/p/345f4d8a5cfa
    Android调用JSloadUrl()evaluateJavascript()【evaluate:评估】
    JS调用Android:通过addJavascriptInterface()进行对象添加、通过WebViewClient.shouldOverrideUrlLoading()回调拦截url、通过WebChromeClient的onJsAlert()onJsConfirm()onJsPrompt()方法回调拦截JS对话框消息

    对比

    解释安卓为啥要加签名机制
    权限管理系统(底层的权限是如何进行 grant 的)

    相关文章

      网友评论

          本文标题:Android-杂项

          本文链接:https://www.haomeiwen.com/subject/qkgfcltx.html