摘要: 布局根节点必须是,同时layout只能包含一个View标签,不能直接包含, 可以使用include不过不能作为root布局。 2020-02-20 阅读全文
posted @ 2020-10-10 09:25 FirstLetterZ 阅读(224) 评论(0) 推荐(0)
摘要: 当NestedScrollView嵌套RecyclerView使用时,可能会产生滑动卡顿当问题,可通过对RecyclerView设置属性android:nestedScrollingEnabled="false",或调用RecyclerView的 void setNestedScrollingEna 阅读全文
posted @ 2020-10-10 09:23 FirstLetterZ 阅读(683) 评论(0) 推荐(0)
摘要: 这类错误是由于回收对象时间过长,由FinalizerWatchdogDaemon负责计时,超时后抛出异常关闭VM的。使用关闭计时器的方式避免崩溃发生 private fun fixAssetManager() { val device = Build.BRAND + " " + Build.MODE 阅读全文
posted @ 2020-10-10 09:21 FirstLetterZ 阅读(181) 评论(0) 推荐(0)
摘要: android设置背景图片默认会被拉伸至填满视图大小,试过使用.9图,但在线性布局不生效,最后找到一种解决方式,将图片缩放以保证在一个方向充满,另一方向使用空白像素填充,注意*图片拉伸方向边界一定要为透明或背景色。 首先使用BitmapFactory.decodeResource生成背景图Drawa 阅读全文
posted @ 2020-10-10 09:20 FirstLetterZ 阅读(1278) 评论(0) 推荐(0)
摘要: ServiceManager在init进程启动之后启动,用来管理系统中的service注册、查找、通讯等。 注册:首先会检查是否有权限注册service,如果没有权限就直接返回不能注册;然后去检查该service是否已经注册过了,如果已经注册过,那就不能再注册;再判断内存是否够用。如果都没有问题,就 阅读全文
posted @ 2020-10-10 09:19 FirstLetterZ 阅读(99) 评论(0) 推荐(0)
摘要: 场景:当页面滚动超过一定距离后,显示回到顶部的按钮,点击按钮平滑滚动回顶部。 实现:监听页面滚动距离,与一特定值比较,控制按钮显示隐藏,点击按钮点用页面平滑滚动Api或者通过自定动画实现滚动。 存在问题:惯性滚动在页面返回顶部后并未结束,导致继续滚行下滑,使得页面无法停留在置顶状态。 解决方法:未找 阅读全文
posted @ 2020-10-09 19:10 FirstLetterZ 阅读(844) 评论(0) 推荐(0)
摘要: 由于ResponseBody内的bytes()、string()方法调用了closeQuietly方法,此方法会将ResponseBody内的数据源清除,所以仅获取一次内容。 解决方案: BufferedSource source = body.source(); source.request(Lo 阅读全文
posted @ 2020-10-09 19:08 FirstLetterZ 阅读(416) 评论(0) 推荐(0)
摘要: 一、事件从Kernel层传递到Framework层 准备工作:WindowManagerService首先通过native方法创建InputManager,InputManager调用Kernel层的InputSystem创建EventHub、InputReader和InputDispatcher。 阅读全文
posted @ 2020-10-09 18:59 FirstLetterZ 阅读(317) 评论(0) 推荐(0)
摘要: 一、数据在内存中的位置 Dalvik内存数据保存在6个位置上: 寄存器:位于处理器内部;速度最快,开发人员没有直接控制权。 栈:位于RAM,速度仅次于“寄存器”;使用的是一级缓存,需要在创建的之前知道占用的内存大小和存活时间;存放引用,实际数据存在堆中; 他们通常都是被调用时处于存储空间中,调用完毕 阅读全文
posted @ 2020-10-09 18:54 FirstLetterZ 阅读(244) 评论(0) 推荐(0)
摘要: equals方法来自于Object.class,在没有被覆写的情况下等同于“==”。 Object.class--171行: 覆写时必须遵守通用约定: 自反性:对于任何非null的引用值x,x.equals(x)必须返回true。 对称性:对于任何非null的引用值x、y,当且仅当x.equals( 阅读全文
posted @ 2020-10-09 18:51 FirstLetterZ 阅读(438) 评论(0) 推荐(0)
摘要: 原本使用数据库的时候,需要根据存储字段建立对应表和列,以及对应增删改查逻辑。于是便想要找到一种方法,只创建一次数据库表格,并且今后的增删改查都用一套逻辑完成。后来想到了将列与数据字段的对应关系放在数据模型之中,这样每一列只关心保存的数据类就可以了。 首先需要了解一下三个关键注解: @SQLiteCl 阅读全文
posted @ 2020-10-09 18:50 FirstLetterZ 阅读(135) 评论(0) 推荐(0)
摘要: 以下内容基于Android Api 28 。 ConcurrentHashMap中,数据实际存储在其内部的Node数组table之中。保存数据时,实际调用putVal(K key, V value, boolean onlyIfAbsent)方法。 final V putVal(K key, V v 阅读全文
posted @ 2020-10-09 18:38 FirstLetterZ 阅读(424) 评论(0) 推荐(0)
摘要: 在主工程中使用tools:node="remove"标记移除项,如下: 阅读全文
posted @ 2020-10-09 18:36 FirstLetterZ 阅读(1274) 评论(0) 推荐(2)
摘要: 主要思路:为避免递归函数的参数、状态积压在栈上,最终耗尽栈空间,参考了cps变换实现的思路。网上给出的cps尾调用,尾递归形成的链式函数,实质上就是返回部分结果和下一循环要执行的方法,个人感觉在阅读性和抽象能力不够友好,所以,改为记录部分结果,以及下一循环的节点值。 import android.s 阅读全文
posted @ 2020-10-09 18:28 FirstLetterZ 阅读(186) 评论(0) 推荐(0)
摘要: Future本身是一个接口,提供取消、查询取消、查询完成、获取结果、设置超时获取结果五个接口方法;默认提供了PendingFuture<V, A>、SwingWorker<T, V>、ForkJoinTask、CompletedFuture、FutureTask五种实现;也可以使用ExecutorS 阅读全文
posted @ 2020-10-09 18:25 FirstLetterZ 阅读(205) 评论(0) 推荐(0)
摘要: 互斥条件:同一时间,同一资源,只能为一个线程锁持有,其他资源请求资源只能等待持有者释放; 请求和保持:线程请求其他资源时,其他资源已被持有,在等待资源释放的过程中,线程不会释放自己持有的资源; 不可剥夺:线程获得的资源在其使用完成前,不会被释放; 环路等待:多个线程之间对其他线程持有对资源等待释放; 阅读全文
posted @ 2020-10-09 18:16 FirstLetterZ 阅读(104) 评论(0) 推荐(0)
摘要: finally中包含return,最终返回finally中return的结果。 下面代码结果为4: int a = 1; try { a = 2; return a; } catch (Exception e) { a = 3; return a; } finally { a = 4; return 阅读全文
posted @ 2020-10-09 18:15 FirstLetterZ 阅读(81) 评论(0) 推荐(0)
摘要: 调用Bundle内的getInt、getDouble等方法时,实际为调用内部Map的get方法,若值为null,返回默认值,否则将值强转为对应类型,失败则返回默认值。 在kotlin时,Map中获得的值如果不是数字类型,则强转一定失败,永远都返回默认值。解决如下:bundle.get("name") 阅读全文
posted @ 2020-10-09 18:12 FirstLetterZ 阅读(390) 评论(0) 推荐(0)
摘要: clone不调用构造函数,new调用构造函数; clone通过深拷贝或浅拷贝复制原对象属性值,new在执行构造函数和对象初始化的时候对属性赋值。 性能上面对差别主要在构造函数对耗时,若构造函数简单则new方法耗时更少(例如,只进行几个属性字段的初始赋值),若构造函数内有耗时操作(例如,需要大量计算, 阅读全文
posted @ 2020-10-09 17:50 FirstLetterZ 阅读(388) 评论(0) 推荐(0)
摘要: 调用对应Class的getDeclaredField或getField方法,获取要修改的Filed; 2个方法的差别在于: getDeclaredField可获取当前Class内所有变量名(private,protect,public,friend),但不会获取父类变量; getField可获取当前 阅读全文
posted @ 2020-10-09 17:49 FirstLetterZ 阅读(1952) 评论(0) 推荐(0)