android开发经验积累

1. 规范子线程的使用,如:不随便new子线程,而使用HandlerThread来集中管理相同类型的子线程。比如我创建一个名字为“DB_THREAD”的HandlerThread,后续我有使用到DB的地方可以使用这个HandlerThread(如果一条线程处理起来比较有压力,可以再创建一个HandlerThread,但需要管理一下负载,哪个负载低用哪个)。

2. 通过new Handler(looper, callback);来获取子线程(HandlerThread)对应的handler(构造Handler的looper即HandlerThread的looper),通过sendMesssage或者postRunnable等方法来发送message到HandlerThread的MessageQueue,并通过实现callback执行具体的操作(此callback即构造Handler的callback)。最好是重新定义Handler,使用弱引用来引用callback(这里使用了proxy模式来操作callback),防止造成activity的内存泄漏。

3. 在线图片支持点击态可以这样来实现:先把在线图片设为background(Imageview.setBackground(Drawable drawble)),而把点击态(selector)设为imageDrawable(ImageView.setImageDrawable(Drawable drawable))。

4. Mainfest中targetSdk设置为>14,则所有界面默认开启了硬件加速(这就是为什么在做乐园项目的时候发现把targetSdk设置为14以上,列表滑动起来十分流畅的原因)。

5. 在使用HashMap时,即使你只设置了一个基本数据类型的键,比如说int,但是也会按照对象的大小来分配内存,而不仅仅是4字节。因此最好使用优化过的数据集合,如SparseArray等。

6. 遇到这样的问题:Activity A通过startActivityForResult要启动Activity B,但当Activity B还没有启动的时候,Activity A的onActivityResult就被回调了。很可能是Activity B的launchMode的原因,已知launchMode为singleTask和singleInstance会导致这个问题。

7. sp存在多进程同时写会造成紊乱的问题,可以把所有sp的操作抽离成一个模块管理起来,虽然我对什么都封装比较反感,但还封装的还是需要封装的,这里比较适合封装一下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值