Android的findViewById动作是比较耗时的,需要遍历布局的树形结构,才能找到相应的视图。所以如果想在这一块进行优化,我们就需要把find过后的内容进行缓存,所以就用ViewHolder的方法
《Effective Java》第22条 优先考虑静态成员类
其中有条建议:如果声明成员类不要求访问外围实例,就要始终把static修饰符放在它的声明中,是它成为静态成员类,而不是非静态成员类。因为非静态成员类的实例会包含一个额外的指向外围对象的引用,保存这份引用要消耗时间和空间,并且导致外围类实例符合垃圾回收时仍然被保留。如果没有外围实例的情况下,也需要分配实例,就不能使用非静态成员类,因为非静态成员类的实例必须要有一个外围实例。
一般写内部类的意图都是为了说明该类和宿主类关系密切,没有static修饰,说明此类必须依赖宿主类的对象;而有static修饰,就不依赖宿主对象存在了,private这玩意,完全取决于你是否希望将此类暴露出去;final则是为了标明该类不可继承修改。
参考:http://blog.csdn.net/caoyang521/article/details/49847881