静态内部类主要作用就是,内部类是否需要隔离“外部类的this对象(指针)”。内部类是有 this 指针的,可以“直接”访问外部类的 成员变量和成员函数(包括私有的成员)。而静态内部类,没有这个this指针,所以无法“直接”调用。
个人的习惯,我通常会把内部静态类,作为一个单独的java文件。
但是Android代码中,却经常使用的Builder,LayoutParams都是以静态内部类的方式存在啊。我们可以根据实际使用情况来效仿。
另外还要提一点,内部静态类(特别是私有内部静态类),在代码混淆上效果更好。会增加反编译的难度。
对于这篇文章,我理解。ViewHolder的构造和复用,与静不静态没关。核心是ListView(AdapterView),通过getView(int position, View convertView, ViewGroup parent) 的convertView会为开发者传入一个可以复用的对象。开发者需要利用该对象,减少应用内存的消耗。
如果从减少内存消耗的角度来开。我认为ViewHolder还是应该修饰成static比较好。这样ViewHolder中可以减少MainActivity的this指针,由于减少了一个this指针的引用,也会对MainActivity的引用计数大大减少。MainActivity的this指针继承于android的Context上下文,对于Context的回收遗漏,是Android内存管理中很大的问题。我们减少了对Context的引用,可以更容易减少Context引用计数出现问题。
今天在做RecyclerView内嵌GridView(显示图片)的时候,遇到的问题:
我使用的是RecyclerView来作为列表显示,而RecyclerView的每个item ,都包含一个GridView(5张图片) ;而RecyclerView的ViewHolder(不是Gridview的) 不加static修饰的时候,分页加载时,item中的GridView会错乱;而如果加了static修饰,gridview就不会错乱!
标签:ViewHolder,静态,static,Context,RecyclerView,final,指针 From: https://blog.51cto.com/u_15976424/6078818