- 处理未捕获异常并获取调用栈信息
Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() { @Override public void uncaughtException(Thread t, Throwable e) { t.getStackTrace(); //可以获取逐层调用栈地址,返回值为StackTraceElement[] } });
StackTraceElement类,其中四个方法getClassName(),getFileName(),getLineNumber(),getMethodName()在调试程序打印Log时非常有用;
-
Resources类中的getIdentifier(name, defType, defPackage)方法,根据资源名称获取其ID,做UI时经常用到;
-
View中的isShown()方法,以前都是用view.getVisibility() == View.VISIBLE来判断的,源码中是该循环判断了自身和所有parent的可见性,这样才真正保证isShown=true时该view是可见的
-
android.media.ThumbnailUtils类,用来获取媒体(图片、视频)缩略图;
-
Context类中getString(int, Object… )方法用来格式化strings.xml中的字符串
-
TextUtils类中的isEmpty(CharSequence)方法,判断字符串是否为null或”“;
-
TextView类中的append(CharSequence)方法,添加文本。一些特殊文本直接用+连接会变成String;
-
DecimalFormat类,用于字串格式化包括指定位数、百分数、科学计数法等;
-
System类中的arraycopy(src, srcPos, dest, destPos, length)方法,用来copy数组;
-
Fragment类中的onHiddenChanged(boolean)方法,使用FragmentTransaction中的hide(),show()时貌似Fragment的其它生命周期方法都不会被调用,可以在这里判断是否被隐藏
-
TextView类中的setTransformationMethod(TransformationMethod)方法,可用来实现“显示密码”功能;
-
View类中的setSelected(boolean)方法结合android:state_selected=”“用来实现图片选中效果;
-
PageTransformer接口,用来自定义ViewPager页面切换动画,用setPageTransformer(boolean, PageTransformer)方法来进行设置;
-
AndroidTestCase类,Android单元测试,在AndroidStudio中使用非常方便;
-
ActivityLifecycleCallbacks接口,用于在Application类中监听各Activity的状态变化;
-
Context类中的createPackageContext(packageName, flags)方法,可用来获取指定包名应用程序的Context对象。
-
SparseArray——Map的高效优化版本。推荐了解姐妹类SparseBooleanArray、SparseIntArray和SparseLongArray。
-
SQLiteDatabase.yieldIfContendedSafely()——让你暂时停止一个数据库事务, 这样你可以就不会占用太多的系统资源
-
ActivityManager.clearApplicationUserData()—— 一键清理你的app产生的用户数据,可能是做用户退出登录功能,有史以来最简单的方式了
-
ActivityOptions ——方便的定义两个Activity切换的动画。 使用ActivityOptionsCompat 可以很好解决旧版本的兼容问题
-
在方法返回一个空集合的时候尽可能使用 Collections.emptyList() 和 Collections.emptySet()。Collection 类会返回一个单例空 list 或 set,这样我们就不需要总是创建新的空集合,浪费内存了。
- 单独运行一个 Gradle 测试
./gradlew testDebug --tests='*.<testname>'
- 在开发应用的过程中使用 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()); }
- android中通过设置alpha来设置view的透明度会导致view绘制两次,可以通过直接设置带透明值的颜色来完成透明view的绘制 android中颜色值通过十六进制来表示,格式为#alpha R G B 其中alpha值从00到ff 00表示完全透明,ff表示完全不透明 R G B的值也是如此 举个栗子 想要一个大概30%透明度的白色 可以这么用 #55ffffff