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