开发过程中注意事项及优化(持续更新~~~)
2016-08-24 14:12
295 查看
把每一件简单的事做好,就不简单了;把每一件平凡的事完成,就不平凡了!
这篇文章会慢慢更新的,自己刚接触到安卓开发,注意事项以及性能优化都会更新,希望对读者有一定的帮助。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201707/61c17ed2eb67211a84e137429ac3f7ad.gif)
1.在handler执行异步信息传递的时候,当我们在非UI线程中,需要把传递的信息sendMessage给主线程,这个时候我们需要的message对象的获取,最好是采用
改掉原本的Message message=new Message();
obtainMessage()获取Message对象就能避免创建对象,从而减少内存的开销了。
2.在开发动画效果的过程中,尽量避免帧动画的使用,容易造成OOM(Out Of Memory)记得在项目开发中,因为我新手,一个信号外放的动画效果,我当时是使用的帧动画,虽然效果看上去一样,但性能差距挺大。老大的项目使用的ScheduledExecutorService,当时说的一句话挺好“动画效果不就是定时任务嘛”........
这样的实现效果可以放在一个线程中去完成,主要是程序在结束的时候,相对于释放资源以及任务结束方便。
3.JSON中optString和getString的区别
optJSONObject源码解析:
getJSONObject源码解析:
4.应用TextUtils简化代码量
这篇文章会慢慢更新的,自己刚接触到安卓开发,注意事项以及性能优化都会更新,希望对读者有一定的帮助。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201707/61c17ed2eb67211a84e137429ac3f7ad.gif)
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)判断两者是否一致。
相关文章推荐
- Ionic开发中注意事项(持续更新)
- 微信开发注意事项(我会持续更新的)
- nginx lua使用注意事项(开发过程中会不断更新)
- 集成开发注意事项(持续更新)
- iOS开发常用的控件属性和注意事项(持续更新)
- 开发的一系列注意事项笔记(持续更新)
- 集成开发注意事项(持续更新)
- 电视的应用开发注意事项[持续更新]
- iOS 从开发到发布过程中需要注意的事项(持续补充)
- listView 与其他组件共用注意事项 (持续更新)
- 【Cocos2d游戏开发之九】讲解CCSpriteBatchNode与TP工具的".pvr.ccz",".plist"共用的终极精灵优化及注意事项!
- 【iOS-Cocos2d游戏开发之九】讲解CCSpriteBatchNode与TP工具的”.pvr.ccz”,”.plist”共用的终极精灵优化及注意事项!
- 【iOS-Cocos2d游戏开发之九】讲解CCSpriteBatchNode与TP工具的”.pvr.ccz”,”.plist”共用的终极精灵优化及注意事项!
- 【iOS-Cocos2d游戏开发之九】讲解CCSpriteBatchNode与TP工具的".pvr.ccz",".plist"共用的终极精灵优化及注意事项!
- Mozilla扩展开发过程遇到的问题(持续更新)
- 【iOS-Cocos2d游戏开发之九】讲解CCSpriteBatchNode与TP工具的".pvr.ccz",".plist"共用的终极精灵优化及注意事项!
- 【Cocos2d游戏开发之九】CCSpriteBatchNode与"pvr.ccz","plist"精灵优化及注意事项 推荐
- 【Cocos2d游戏开发之九】讲解CCSpriteBatchNode与TP工具的".pvr.ccz",".plist"共用的终极精灵优化及注意事项!
- JavaScript 操作注意事项(此日志持续更新)
- 最新开发的消费平台开发过程 持续更新(二)