四月份。味道是复杂的。酸甜苦辣。
趁月底,把April学到的东西总结一下。
基本是经验型的了哦。
//
1)为何我仿写的数据库查询速度没有源快?
起初认为是耗时查询慢,然后准备用asyncTask处理,后来想想我是放在主线程里面进行这个查询操作的,不对,然后就再去反编源,通过数据库表名找到混淆过的那个类,发现没有反编译出来那段代码,连混淆过的abcd都没有,所以此方案失效,然后去源那边再次查询源,索性慢慢数源里面一个关键子端检索出来多少条,然后直觉觉得,他是加了数量限制的,我们这边查询了好几百条,他的只有几十条,然后加上limit xx,然后跑了一下,速度一样,效果一样,哈哈哈哈,就这样,db查询速度优化的问题解决了。
2)使用service的时候,发送广播之类的监听器用完之后要反注册,防止待会oom之类的问题。
3)findViews()-initData/initViews()--fillAdapters()-registerListeners()套路。
这样套路一放出来,就和写一个*Activity.java一样,几个生命周期里面该做什么逻辑就写的思路清晰了。
5)每个项目,activity ,service,util,view,bean,application包名建好,然后分开;
6)类命名用大驼峰法,变量小驼峰法,final static的静态常量全部大写,用下划线连接:
eg: packag:*.activity-->HelloRuleSampleActivity.java
package:*.bean-->testBean.java
private Button mLocationButton;
private TextView mTempString;
public final static String EXTRA_ACTION;
然后一点就是,在*.xml文件中,控件的id也尽量规范化,采用小驼峰法,不建议带下划线。这样你可以快乐的*.java中复制粘贴那个id,然后直接findView的时候直接前后保持一致,哈哈。
7)
快速定位需要的代码:我的需求是在一大推代码中定位一个
关于头部文件动作逻辑,找到布局文件,然后通过id在目标activity里面找,如果没有找到该对象,那么就去extends的父类里面找。这个快速定位需要的代码block的详细的方法,可以参考
这个博客
。
关于这点,在eclipse里面,我是这样的操作的,先
【ctrl+H】找到这个相关的string,或者image(有时间你可以复制一下这个img到桌面什么的<然后删掉res里面,然后就看到红叉叉了,哈哈,这样就找到了),找到这个资源之后,【ctrl+alt+H】找到调用这个方法的上一层,然后慢慢的重复,直到定位到需要的snippet啦
--20150421
8)自定义控件,有的组件的属性是要run起来之后,才能看到效果的,不过是可以在一个xml文件的GUI视图里面直接拖拽进去的,然后在GUI界面里面看。一定不要觉得在GUI界面预览不成功就是没写好!!!有的地方要跑起来才真正看到。
//
9)设计模式的一种
ChildrenActivity extends baseActiviy{
}
然后里面引入了一个baseActivity的类似Header的View,然后在ChildrenActivity里面需要复写那个Header的一个button的点击事件。
那么就这样玩吧:
给这个button注册点击事件监听器ListenerA
baseActivity.findViewById(R.id.xx).setOnClickListener(new View.onClickListener(){
@override
public void onClick(View view) {
onTitleClicked( );
})
protected void onTitleClicked( ) {
}
然后在childrenActivity中复写这个onTitleClicked( )就好了;
有点类似接口思想,不过是对子类继承父类的应用。