04 2022 档案

摘要:有几种方法可以新开一个线程:继承一个thread,实现一个runable接口,实现一个callable接口;需要注意线程导致的内存泄漏,不要随意新建线程池,尽量复用线程池;Android线程没有上限,但只享有一个进程的资源,所以合适的线程数量很重要,线程池中线程的数量一般CPU核数或者I/O效能有关 阅读全文
posted @ 2022-04-08 10:54 小小卷 阅读(195) 评论(0) 推荐(0)
摘要:内存溢出OOM,当分配的内存不够加载相关资源时容易导致内存溢出,内存泄漏也是比较容易导致内存溢出的。开发中比较容易出现的地方: 1、加载大图、微博长图。在某些低端机容易OOM 2、bitmap大对象使用完没有关闭 3、文件流使用完没有关闭、广播和服务没有取消注册等 4、过多的耗时操作没有关闭,访问网 阅读全文
posted @ 2022-04-08 10:52 小小卷 阅读(160) 评论(0) 推荐(0)
摘要:ANR原因: 1、主线程阻塞或者进行数据读取 2、CPU满负荷或者I/O阻塞 3、内存不足 4、各大组件生命周期ANR,比如广播onReceive(),输入5秒,前台服务20秒,后台服务60秒 解决办法: 根据log日志查找anr类型,复现; 分析trace.txt 的ANR日志; 借助DDMS进行 阅读全文
posted @ 2022-04-08 10:50 小小卷 阅读(94) 评论(0) 推荐(0)
摘要:LinearLayout用在横向或者纵向控件比较多的时候,效率较高; RelativeLayout 执行两次绘制onMesure(),用在子布局有很多控件且布局不规则的时候; FrameLayout 使用在需要有视图效果重叠控件的地方比较方便; 绘制效率:FrameLayout >LinearLay 阅读全文
posted @ 2022-04-08 10:49 小小卷 阅读(324) 评论(0) 推荐(0)
摘要:AIDL是一种接口语言,Binder的数据传输过程就是通过AIDL来实现的: 1、服务端中的Service给与其绑定的客户端提供Binder对象 2、客户端通过AIDL接口中的asInterface()将这个Binder对象转换为代理Proxy并通过它发起RPC请求 3、客户端挂起当前线程,并将数据 阅读全文
posted @ 2022-04-08 10:48 小小卷 阅读(175) 评论(0) 推荐(0)
摘要:Serializable的设计初衷是为了序列化对象到本地文件、数据库、网络流、RMI以便数据传输,当然这种传输可以是程序内的也可以是两个程序间的。而Android的Parcelable的设计初衷是由于Serializable效率过低,消耗大,而android中数据传递主要是在内存环境中(内存属于an 阅读全文
posted @ 2022-04-08 10:43 小小卷 阅读(135) 评论(0) 推荐(0)
摘要:1、那些内存需要回收: 可以采用引用计数法,有引用就+1,为0的就是没有引用的直接回收,但无法回收两个对象相互引用的情况;这种情况需要使用可达性分析法,当一个对象到GC roots无引用,证明这个对象可以被回收,可以当作gc roots结点的对象有:虚拟机栈、方法区静态属性、方法区静态常量、本地方法 阅读全文
posted @ 2022-04-08 10:42 小小卷 阅读(92) 评论(0) 推荐(0)
摘要:1、软引用是用来描述一些有用但并不是必需的对象,在Java中用java.lang.ref.SoftReference类来表示。对于软引用关联着的对象,只有在内存不足的时候JVM才会回收该对象。因此,这一点可以很好地用来解决OOM的问题,并且这个特性很适合用来实现缓存:比如网页缓存、图片缓存等。 2、 阅读全文
posted @ 2022-04-08 10:40 小小卷 阅读(994) 评论(0) 推荐(0)
摘要:android:layout_gravity:指定控件在布局中的对齐方式 android:gravity:指定文字在控件中的对齐方式 阅读全文
posted @ 2022-04-08 10:37 小小卷 阅读(15) 评论(0) 推荐(0)
摘要:1、增强版List,不仅具有List的效果,还弥补了许多List的不足 2、RecyclerView属于是新增控件,使用之前必须先在build.gradle中添加相应的依赖库 3、RecyclerView有内置的ViewHolder,使用时直接继承它,提供了onCreateViewHolder与on 阅读全文
posted @ 2022-04-08 10:35 小小卷 阅读(353) 评论(0) 推荐(0)
摘要:1、动态注册:在代码中注册,灵活性高,自由控制注册和注销,但是必须要在程序启动之后才能接受到广播 2、静态注册:在AndroidManifest.xml文件中注册,可以在程序未启动的情况下接收到广播 补充:上面两种方式都是全局广播,可以跨进程通信,存在安全隐患。 阅读全文
posted @ 2022-04-08 10:33 小小卷 阅读(398) 评论(0) 推荐(0)
摘要:Intent,比如拨打电话ContentProvider数据库存储数据Broadcast广播通信AIDL通信,通过接口共享数据 阅读全文
posted @ 2022-04-08 10:31 小小卷 阅读(277) 评论(0) 推荐(0)
摘要:wait是Object的方法,wait是对象锁,锁定方法不让继续执行,当执行notify方法后就会继续执行,sleep 是Thread的方法,sleep 是使线程睡眠,让出cpu,结束后自动继续执行 阅读全文
posted @ 2022-04-08 10:30 小小卷 阅读(58) 评论(0) 推荐(0)
摘要:String str="aaa";str="bbb"; 以上代码虽然改变了str,但是执行过程是回收str,把值赋给一个新的strStringBuffer创建之后,可以去修改StringBuilder也可修改,执行效率高于StringBuffer,不安全当字符赋值少使用String字符赋值频繁使用S 阅读全文
posted @ 2022-04-08 10:26 小小卷 阅读(17) 评论(0) 推荐(0)