温故而知新可以为师矣!
1、定义变量的话,能定义局部变量的话尽量使用局部变量,不使用成员变量来定义变量。因为局部变量是初始化在栈内存中的,方法调用过后就会被回收,成员变量是初始化在堆内存中的,不会被即时回收。
2、任何获取到的对象,要使用他的属性的时候都需要判空。
ActionBar bar = getSupportActionBar();
if(bar!=null){
bar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
}
这里的bar有null的风险,需要进行判空
3、接口定义的方法不需要用public、private等关键字来修饰,因为接口的方法本来就是要被别人实现的,不用多此一举;
改成:
4、string的对比,如果是一个变量和一个常量进行对比的话写成:常量.equals(变量),例如:s.equals("")应该写成:"".equals(s),原因:变量有为null的风险,如果变量为null的话,就会报null point的错误,但是"".equals(s)这种写法,就算变量为null,只会返回false,不会crash。
5、关于创建long类型的变量:new Long(s)改成Long.valueOf(s)的写法。
6、android的webview使用JS注入的安全性,要给每个被JS调用的方法都加上: @JavascriptInterface的注解,是为了让JS没有权限访问native 的field;