1. 处理未捕获异常并获取调用栈信息
     Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
             @Override
             public void uncaughtException(Thread t, Throwable e) {
                 t.getStackTrace();    //可以获取逐层调用栈地址,返回值为StackTraceElement[]
             }
     });
    

    StackTraceElement类,其中四个方法getClassName(),getFileName(),getLineNumber(),getMethodName()在调试程序打印Log时非常有用;

  2. Resources类中的getIdentifier(name, defType, defPackage)方法,根据资源名称获取其ID,做UI时经常用到;

  3. View中的isShown()方法,以前都是用view.getVisibility() == View.VISIBLE来判断的,源码中是该循环判断了自身和所有parent的可见性,这样才真正保证isShown=true时该view是可见的

  4. android.media.ThumbnailUtils类,用来获取媒体(图片、视频)缩略图;

  5. Context类中getString(int, Object… )方法用来格式化strings.xml中的字符串

  6. TextUtils类中的isEmpty(CharSequence)方法,判断字符串是否为null或”“;

  7. TextView类中的append(CharSequence)方法,添加文本。一些特殊文本直接用+连接会变成String;

  8. DecimalFormat类,用于字串格式化包括指定位数、百分数、科学计数法等;

  9. System类中的arraycopy(src, srcPos, dest, destPos, length)方法,用来copy数组;

  10. Fragment类中的onHiddenChanged(boolean)方法,使用FragmentTransaction中的hide(),show()时貌似Fragment的其它生命周期方法都不会被调用,可以在这里判断是否被隐藏

  11. TextView类中的setTransformationMethod(TransformationMethod)方法,可用来实现“显示密码”功能;

  12. View类中的setSelected(boolean)方法结合android:state_selected=”“用来实现图片选中效果;

  13. PageTransformer接口,用来自定义ViewPager页面切换动画,用setPageTransformer(boolean, PageTransformer)方法来进行设置;

  14. AndroidTestCase类,Android单元测试,在AndroidStudio中使用非常方便;

  15. ActivityLifecycleCallbacks接口,用于在Application类中监听各Activity的状态变化;

  16. Context类中的createPackageContext(packageName, flags)方法,可用来获取指定包名应用程序的Context对象。

  17. SparseArray——Map的高效优化版本。推荐了解姐妹类SparseBooleanArray、SparseIntArray和SparseLongArray。

  18. SQLiteDatabase.yieldIfContendedSafely()——让你暂时停止一个数据库事务, 这样你可以就不会占用太多的系统资源

  19. ActivityManager.clearApplicationUserData()—— 一键清理你的app产生的用户数据,可能是做用户退出登录功能,有史以来最简单的方式了

  20. ActivityOptions ——方便的定义两个Activity切换的动画。 使用ActivityOptionsCompat 可以很好解决旧版本的兼容问题

  21. 在方法返回一个空集合的时候尽可能使用 Collections.emptyList() 和 Collections.emptySet()。Collection 类会返回一个单例空 list 或 set,这样我们就不需要总是创建新的空集合,浪费内存了。

  22. 单独运行一个 Gradle 测试
     ./gradlew testDebug --tests='*.<testname>'
    
  23. 在开发应用的过程中使用 Strict 模式以确保我们没有在主线程做某些不该做的事情(如耗时任务,网络访问等……),但要注意的是,应用的非 Debug 版本,即 Release 版本所用的代码必须把 Strict 模式关掉,要不然会影响应用性能甚至导致崩溃。
    if (BuildConfig.DEBUG) {
    StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
          .detectAll()
          .penaltyLog()
          .build());
    StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
          .detectAll()
          .penaltyLog()
          .penaltyDeathOnNetwork()
          .build());
        }
    
  24. android中通过设置alpha来设置view的透明度会导致view绘制两次,可以通过直接设置带透明值的颜色来完成透明view的绘制 android中颜色值通过十六进制来表示,格式为#alpha R G B 其中alpha值从00到ff 00表示完全透明,ff表示完全不透明 R G B的值也是如此 举个栗子 想要一个大概30%透明度的白色 可以这么用 #55ffffff