240 发简信
IP属地:宁夏
  • Android混淆导致无法反射获取泛型类型

    现象:Child继承Parent并声明了泛型类型 通过反射获取对象c的泛型类型偶尔会返回java.lang.Object类型。 原因:混淆时会将未用到泛型信息擦除,即在对象c...

  • JAVA 查找并移除字符串中的Emoji 😊

    一、基础知识 Emoji 实际上是 UTF-8 (Unicode) 字符集上的特殊字符,多数基本 Emoji 都被分配到 Unicode 编码表 1 号平面的 U+1F300...

  • Android 记录自定义Activity栈管理遇到的一个问题

    自定义Activity栈管器通过Application添加一个Activity生命周期监听,并在onActivityDestroyed时将记录移出管理栈,但是在频繁进入、退出...

  • class.newInstance()方法从java9开始弃用

    原因:使用class.newInstance()方法时由默认构造函数中抛出的异常无法被捕获;解决:使用class.getDeclaredConstructor().newIn...

  • Http请求头Range

    用于请求服务器返回指定部分内容,常用由于断点续传。 请求格式 Range: <数据格式>=<数据开始的索引位置>-<数据结束的索引位置>;具体使用举例: 请求从0至500的b...

  • 装饰者模式与代理模式区别

    代理持有被被代理对象,装饰器继承被装饰对象 被代理对象不能被直接操作,被装饰对象可以 Android中的Context就是常见的装饰者模式;BindService获取的IBi...

  • AQS原理

    AQS(AbstractQueuedSynchronizer)主要用于对资源状的态管理及等待队列的调度。资源的状态可分为:空闲、独占、共享3种;锁竞争模式可分为:公平锁和非公...

  • JAVA对象内存占用

    byte、boolean 1个字节short,char 2个字节int,float 4个字节long,double 8个字节对象头 8个字节对齐:如果大小不是8的倍数,增加占...

  • JAVA ClassLoader命名空间

    每个类加载器都对应一个命名空间,命名空间由该加载器及所有父类加载器所加载的类组成。 特点: 在同一个命名空间中,不会出现两个全类名(包名+类名)完全一样的类; 在不同的命名空...

  • Android SharedPreferences 使用注意事项

    SharedPreference的内容会保留一份缓存在HashMap中,所以不要保存大数据,否则会增加GC频率; apply方法在QueuedWork.waitForFini...

  • Android LiveData粘性,粘连,倒灌

    工作机制:每次改变LiveData数据都会对数据版本号加1,并触发版本号小于数据版本号的观察者监听,触发后观察者的版本号与数据版本号一致。 粘性事件:更新数据后,观察者再订阅...

  • 内核态与用户态

    含义: 当程序运行在内核空间时为内核态,当程序运行在用户空间时为用户态。用户态只能访问用户空间下的地址,而内核态可以访问所有地址。 产生原因: 为防止用户程序对系统造成破坏,...

  • JAVA ClassLoader双亲委派

    双亲委派机制的意义:当一个类需要被加载的时候,需要通过一个类的全限定名来获取定义此类的二进制字节流,而这个动作由ClassLoader来完成。对于任意一个类,都需要保证其在虚...

  • Android免代码自动初始化

    原理:ContentProvider在Application执行attachBaseContext方法时,会自动触发onCreate,所以通过创建并注册自定义ContentP...

  • Android RecyclerView优化

    减少onBindViewHolder内的逻辑处理,分离数据处理和视图加载过程; 尽可能使用局部刷新,减少使用全部刷新; 如果ItemView的高度是固定,设置Recycler...

  • Flutter widget参数Key

    代码注释上的描述:用于控制一个widget如何替换树中的另一个widget。如果两个widget的运行时类型和参数key分别相等(==),则通过Element.update更...

  • Dart Map

    创建1)new创建 2)字面量创建 3)创建不可修改的Map 创建的map默认为LinkedHashMap。 修改 遍历Map.keys , Map.values , Map...

  • Dart 初始化列表

    B类构造函数后的冒号后面的内容就是初始化列表。 注意事项: 不同的初始化实例变量之间使用逗号隔开;初始化列表中可以使用assert判断参数;父类构造器也是初始化列表而且必须写...

  • lowbit与运算

    定义: 求数字x的二进制表达式中最低位的1所对应的值。 计算: 返回值均不带符号;如果x为奇数则返回为1;如果x为偶数,返回其约数中最大的符合2^n格式的值; 应用: 最常用...

  • Android 12适配点

    增加了默认的app启动页SplashScreen;当应用targetSdkVertion>= 31时,在冷启动或温启动是,会先加载展示启动页SplashScreen,然后再显...