Java中隐藏的this变量和局部变量可能引发的内存泄露问题

背景

众所周知,在Java中,成员方法内可以使用this来引用当前对象,使用起来特别方便。但是在JVM中方法是在方法区中,所有的类的对象都共用了一个方法区,那么JVM是怎么知道this是指向哪个对象的呢?
其实为了实现这一功能,Java的处理方式很简单,在编译时,为每个成员方法都默默的添加了一个参数this,当调用这个方法时,把当前对象以参数的形式传进去即可。

Apk安装过程分析

解决Android5.0 ListView快速滚动后,接近顶部时滚动方向反向的bug

issue描述:https://code.google.com/p/android/issues/detail?id=159739
原因:ListView内部的一个bug,在接近顶部时,mFirstPosition提前变为0,导致其他根据mFirstPosition来判断的逻辑错误,从而引发滚动事件异常。

内部类对宿主类private成员的访问

摘自http://developer.android.com/intl/zh-cn/training/articles/perf-tips.html#PackageInner

Windows、Ubuntu双系统下,给Ubuntu增加磁盘空间

 因为本人安装的是Windows,Ubuntu双系统,所以当时给Ubuntu分配的空间比较小,现在想在Ubuntu下编译Android Rom,但是AOSP代码就是几十G,空间严重不够,因此,准备给Ubuntu增加磁盘空间。

Ubuntu15.04下编译Android5.1源码

编译环境

  • ubuntu:ubuntu-15.04-desktop-amd64
  • android:android-5.1.0_r3
  • 硬盘空间100G,最好预留比较多的硬盘空间,以后可以扩展用。如果不设置ccache,编译完后差不多占用47G+,设置ccache,会多占用8G+。

Mac下安装OpenGrok

        OpenGrok一个快速、便于使用的源代码搜索与对照引擎。它帮助你搜索,对照,定位你的源代码树。它能够明白各种程序文件格式和版本控制历史记录如SCCS,RCS,CVS与Subversion。OpenGrok是OpenSolaris操作系统源文件浏览和搜索的工具。

Fragment实例化,Fragment生命周期源码分析

    以下从FragmentActivity.onCreate开始分析Fragment的实例化,以及生命周期。

Android Studio中忽略目录不显示在Project文件列表中

    在Android Studio中,有时一个Projcet下Module比较多,可能有些不需要显示,这时需要隐藏掉一些Module不显示。

Android SortGridView

这是一个简单的对GridView中元素进行重新排序的控件,排序过程中带动画效果

SortGridView