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

来源:互联网 发布:cacti监控linux主机 编辑:程序博客网 时间:2024/05/18 08:09

                                                 把每一件简单的事做好,就不简单了;把每一件平凡的事完成,就不平凡了!


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


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() <= 0TextUtils.equals(regPass, regPassAgain)判断两者是否一致。

2 0
原创粉丝点击