复习

作者: NullPointe_8e82 | 来源:发表于2020-03-02 21:42 被阅读0次

    singleTask模式,当启动这个实例时,如果栈内存在该实例会令其顶部的所有的实例出栈,并复用该实例。

    对称加密,就是加密和解密数据都是使用同一个key,这方面的算法有DES。

    非对称加密,加密和解密是使用不同的key。发送数据之前要先和服务端约定生成公钥和私钥,使用公钥加密的数据可以用私钥解密,反之。这方面的算法有RSA。ssh 和 ssl都是典型的非对称加密。

    RecyclerView性能优化

    1、onBindViewHolder不做逻辑运算等操作

    2、DiffUtil的使用

    3、减少xml文件inflate时间,利用代码生成view

    4、如果item高度是固定的话,可以使用RecyclerView.setHasFixedSize(true);

    5、如果子RecyclerView具有相同的adapter,那么可以设置RecyclerView.setRecycledViewPool(pool)来共用一个RecycledViewPool

    (如果LayoutManager是LinearLayoutManager或其子类,需要手动开启这个特性:layout.setRecycleChildrenOnDetach(true))

    6、用空间换时间,来提高滚动的流畅性。

    recyclerView.setItemViewCacheSize(20);

    recyclerView.setDrawingCacheEnabled(true);

    recyclerView.setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_HIGH);

    7、设置RecyclerView.addOnScrollListener()和onViewRecycled;来在滑动过程中或移除手机屏幕后停止加载的操作。

    8、设置adapter.setHasStableIds(true),并重写getItemId()来给每个Item一个唯一的ID,一样的model数据不会重复加载

    主线程中的Looper.loop()死循环为什么不会导致ANR?

    一个程序的 main 方法执行完成, 便代表着这个程序运行结束, 那么要使 application 一直得到运行,直到用户退出才结束程序, 那么我们势必得让这个线程一直运行下去不能结束, 否则一个APP 刚启动, main 方法结束,直接退出, 那程序也就结束了,那如何让一个线程一直运行呢?这里就用了一个无限循环的阻塞方式。

    ANR:如果应用程序主线程(即UI线程)在超时时间内对输入事件没有处理完毕,或者对特定操作没有执行完毕,就会出现ANR。

    相关文章

      网友评论

          本文标题:复习

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