您的位置:首页 > 其它

开发过程中注意事项及优化(持续更新~~~)

2016-08-24 14:12 295 查看
把每一件简单的事做好,就不简单了;把每一件平凡的事完成,就不平凡了!

这篇文章会慢慢更新的,自己刚接触到安卓开发,注意事项以及性能优化都会更新,希望对读者有一定的帮助。


1.在handler执行异步信息传递的时候,当我们在非UI线程中,需要把传递的信息sendMessage给主线程,这个时候我们需要的message对象的获取,最好是采用

Message message = mHandler.obtainMessage();
message.what = mHandlerIndex;
message.obj = result;
mHandler.sendMessage(message);


改掉原本的Message message=new Message();

obtainMessage()获取Message对象就能避免创建对象,从而减少内存的开销了。

2.在开发动画效果的过程中,尽量避免帧动画的使用,容易造成OOM(Out Of Memory)记得在项目开发中,因为我新手,一个信号外放的动画效果,我当时是使用的帧动画,虽然效果看上去一样,但性能差距挺大。老大的项目使用的ScheduledExecutorService,当时说的一句话挺好“动画效果不就是定时任务嘛”........
mSchedule = Executors.newSingleThreadScheduledExecutor();
mSchedule.scheduleAtFixedRate(new AdvertingTask(), 500, 500,
TimeUnit.MILLISECONDS);


这样的实现效果可以放在一个线程中去完成,主要是程序在结束的时候,相对于释放资源以及任务结束方便。
public void finish() {

if (mSchedule != null && (!mSchedule.isShutdown())) {
mSchedule.shutdown();
mSchedule = null;
}

super.finish();
}


3.JSON中optString和getString的区别

optJSONObject源码解析:
public JSONObject optJSONObject(String name) {
Object object = opt(name);
return object instanceof JSONObject ? (JSONObject) object : null;
}
//当返回值不是JSONObject对象时,返回值为null,不抛出异常;


getJSONObject源码解析:
public JSONObject getJSONObject(String name) throws JSONException {
Object object = get(name);
if (object instanceof JSONObject) {
return (JSONObject) object;
} else {
throw JSON.typeMismatch(name, object, "JSONObject");
}
}
//当返回值不是JSONObject对象时,抛出异常;


4.应用TextUtils简化代码量
TextUtils.isEmpty(phone)替代原本的phone == null || phone.trim().length() <= 0

TextUtils.equals(regPass, regPassAgain)判断两者是否一致。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐