这是国外的一个大神(http://blog.danlew.net/about/)总结的,被国内(http://androidperformance.com/)一个大神翻译了,我只是大天然的搬运工,由于那边是一期一期的,我在此汇个总,方便你们预览,我也会即时不按期更新,走着~html
Activity.startActivities() 经常使用于在应用程序中间启动其余的Activity.java
TextUtils.isEmpty() 简单的工具类,用于检测是否为空android
Html.fromHtml() 用于生成一个Html,参数能够是一个字符串.我的认为它不是很快,因此我不怎么常常去用.(我说不常常用它是为了重点突出这句话:请多手动构建 Spannable 来替换 Html.fromHtml),可是它对渲染从 web 上获取的文字仍是很不错的。git
TextView.setError() 在验证用户输入的时候很棒github
Build.VERSION_CODES 这个标明了当前的版本号,在处理兼容性问题的时候常常会用到.点进去能够看到各个版本的不一样特性web
Log.getStackTraceString() 方便的日志类工具,方法Log.v()、Log.d()、Log.i()、Log.w()和Log.e()都是将信息打印到LogCat中,有时候须要将出错的信息插入到数据库或一个自定义的日志文件中,那么这种状况就须要将出错的信息以字符串的形式返回来,也就是使用static String getStackTraceString(Throwable tr)方法的时候.sql
LayoutInflater.from() 顾名思义,用于Inflate一个layout,参数是layout的id.这个常常写Adapter的人会用的比较多.数据库
ViewConfiguration.getScaledTouchSlop() 使用 ViewConfiguration 中提供的值以保证全部触摸的交互都是统一的。这个方法获取的值表示:用户的手滑动这个距离后,才断定为正在进行滑动.固然这个值也能够本身来决定.可是为了一致性,仍是使用标准的值较好.canvas
PhoneNumberUtils.convertKeypadLettersToDigits 顾名思义.将字母转换为数字,相似于T9输入法,缓存
Context.getCacheDir() 获取缓存数据文件夹的路径,很简单可是知道的人很少,这个路径一般在SD卡上(这里的SD卡指的是广义上的SD卡,包括外部存储和内部存储)Adnroid/data/您的应用程序包名/cache/ 下面.测试的时候,能够去这里面看是否缓存成功.缓存在这里的好处是:不用本身再去手动建立文件夹,不用担忧用户把本身建立的文件夹删掉,在应用程序卸载的时候,这里会被清空,使用第三方的清理工具的时候,这里也会被清空.
ArgbEvaluator 用于处理颜色的渐变。就像 Chris Banes 说的同样,这个类会进行不少自动装箱的操做,因此最好仍是去掉它的逻辑本身去实现它。这个没用过,不明其因此然,回头再补充.
ContextThemeWrapper 方便在运行的时候修改主题.
Space space是Android 4.0中新增的一个控件,它实际上能够用来分隔不一样的控件,其中造成一个空白的区域.这是一个轻量级的视图组件,它能够跳过Draw,对于须要占位符的任何场景来讲都是很棒的。
ValueAnimator.reverse() 这个方法能够很顺利地取消正在运行的动画.我超喜欢.
DateUtils.formatDateTime() 用来进行区域格式化工做,输出格式化和本地化的时间或者日期.
AlarmManager.setInexactRepeating 经过闹铃分组的方式省电,即便你只调用了一个闹钟,这也是一个好的选择,(能够确保在使用完毕时自动调用 AlarmManager.cancel ()。原文说的比较抽象,这里详细说一下:setInexactRepeating指的是设置非准确闹钟,使用方法:alarmManager.setInexactRepeating(AlarmManager.RTC, startTime,intervalL, pendingIntent),非准确闹钟只能保证大体的时间间隔,可是不必定准确,可能出现设置间隔为30分钟,可是实际上一次间隔20分钟,另外一次间隔40分钟。它的最大的好处是能够合并闹钟事件,好比间隔设置每30分钟一次,不唤醒休眠,在休眠8小时后已经积累了16个闹钟事件,而在手机被唤醒的时候,非准时闹钟能够把16个事件合并为一个, 因此这么看来,非准时闹钟通常来讲比较节约能源.
Formatter.formatFileSize() 一个区域化的文件大小格式化工具。通俗来讲就是把大小转换为MB,G,KB之类的字符串.
ActionBar.hide().show() 顾名思义,隐藏和显示ActionBar,能够优雅地在全屏和带Actionbar之间转换.
Linkify.addLinks() 在Text上添加连接.很实用.
StaticLayout 在自定义 View 中渲染文字的时候很实用。
Activity.onBackPressed() 很方便的管理back键的方法,有时候须要本身控制返回键的事件的时候,能够重写一下.好比加入 “点两下back键退出” 功能.
GestureDetector 用来监听和相应对应的手势事件,好比点击,长按,慢滑动,快滑动,用起来很简单,比你本身实现要方便许多.
DrawFilter 可让你在不调用onDrew方法的状况下,操做canvas,比了个如,你能够在建立自定义 View 的时候设置一个 DrawFilter,给父 View 里面的全部 View 设置反别名。
ActivityManager.getMemoryClass() 告诉你你的机器还有多少内存,在计算缓存大小的时候会比较有用.
ViewStub 它是一个初始化不作任何事情的 View,可是以后能够载入一个布局文件。在慢加载 View 中很适合作占位符。惟一的缺点就是不支持标签,因此若是你不过小心的话,可能会在视图结构中加入不须要的嵌套。
SystemClock.sleep() 这个方法在保证必定时间的 sleep 时很方便,一般我用来进行 debug 和模拟网络延时。
DisplayMetrics.density 这个方法你能够获取设备像素密度,大部分时候最好让系统来自动进行缩放资源之类的操做,可是有时候控制的效果会更好一些.(尤为是在自定义View的时候).
Pair.create() 方便构建类和构造器的方法。
UrlQuerySanitizer——使用这个工具能够方便对 URL 进行检查。
Fragment.setArguments——由于在构建 Fragment 的时候不能加参数,因此这是个很好的东西,能够在建立 Fragment 以前设置参数(即便在 configuration 改变的时候仍然会致使销毁/重建)。
DialogFragment.setShowsDialog ()—— 这是一个很巧妙的方式,DialogFragment 能够做为正常的 Fragment 显示!这里可让 Fragment 承担双重任务。我一般在建立 Fragment 的时候把 onCreateView ()和 onCreateDialog ()都加上,就能够建立一个具备双重目的的 Fragment。
FragmentManager.enableDebugLogging ()——在须要观察 Fragment 状态的时候会有帮助。
LocalBroadcastManager——这个会比全局的 broadcast 更加安全,简单,快速。像 otto 这样的 Event buses 机制对你的应用场景更加有用。
PhoneNumberUtils.formatNumber ()——顾名思义,这是对数字进行格式化操做的时候用的。
Region.op()——我发如今对比两个渲染以前的区域的时候很实用,若是你有两条路径,那么怎么知道它们是否是会重叠呢?使用这个方法就能够作到。
Application.registerActivityLifecycleCallbacks——虽然缺乏官方文档解释,不过我想它就是注册 Activity 的生命周期的一些回调方法(顾名思义),就是一个方便的工具。
versionNameSuffix——这个 gradle 设置可让你在基于不一样构建类型的 manifest 中修改版本名这个属性,例如,若是须要在在 debug 版本中以”-SNAPSHOT”结尾,那么就能够轻松的看出当前是 debug 版仍是 release 版。
CursorJoiner——若是你是只使用一个数据库的话,使用 SQL 中的 join 就能够了,可是若是收到的数据是来自两个独立的 ContentProvider,那么 CursorJoiner 就很实用了。
Genymotion——一个很是快的 Android 模拟器,本人一直在用。
-nodpi——在没有特别定义的状况下,不少修饰符(-mdpi,-hdpi,-xdpi等等)都会默认自动缩放 assets/dimensions,有时候咱们须要保持显示一致,这种状况下就可使用 -nodpi。
BroadcastRecevier.setDebugUnregister ()——又一个方便的调试工具。
Activity.recreate ()——强制让 Activity 重建。
PackageManager.checkSignatures ()——若是同时安装了两个 app 的话,能够用这个方法检查。若是不进行签名检查的话,其余人能够轻易经过使用同样的包名来模仿你的 app。
Activity.isChangingConfigurations ()——若是在 Activity 中 configuration 会常常改变的话,使用这个方法就能够不用手动作保存状态的工做了。
SearchRecentSuggestionsProvider——能够建立最近提示效果的 provider,是一个简单快速的方法。
ViewTreeObserver——这是一个很棒的工具。能够进入到 VIew 里面,并监控 View 结构的各类状态,一般我都用来作 View 的测量操做(自定义视图中常常用到)。
org.gradle.daemon=true——这句话能够帮助减小 Gradle 构建的时间,仅在命令行编译的时候用到,由于 Android Studio 已经这样使用了。
DatabaseUtils——一个包含各类数据库操做的使用工具。
android:weightSum (LinearLayout)——若是想使用 layout weights,可是却不想填充整个 LinearLayout 的话,就能够用 weightSum 来定义总的 weight 大小。
android:duplicateParentState (View)——此方法可使得子 View 能够复制父 View 的状态。好比若是一个 ViewGroup 是可点击的,那么能够用这个方法在它被点击的时候让它的子 View 都改变状态。
android:clipChildren (ViewGroup)——若是此属性设置为不可用,那么 ViewGroup 的子 View 在绘制的时候会超出它的范围,在作动画的时候须要用到。
android:fillViewport (ScrollView)——在这片文章中有详细介绍文章连接,能够解决在 ScrollView 中当内容不足的时候填不满屏幕的问题。
android:tileMode (BitmapDrawable)——能够指定图片使用重复填充的模式。
android:enterFadeDuration/android:exitFadeDuration (Drawables)——此属性在 Drawable 具备多种状态的时候,能够定义它展现前的淡入淡出效果。
android:scaleType (ImageView)——定义在 ImageView 中怎么缩放/剪裁图片,通常用的比较多的是“centerCrop”和“centerInside”。
Merge——此标签能够在另外一个布局文件中包含别的布局文件,而不用再新建一个 ViewGroup,对于自定义 ViewGroup 的时候也须要用到;能够经过载入一个带有标签的布局文件来自动定义它的子部件。
AtomicFile——经过使用备份文件进行文件的原子化操做。这个知识点以前我也写过,不过最好仍是有出一个官方的版本比较好。
ViewDragHelper ——视图拖动是一个比较复杂的问题。这个类能够帮助解决很多问题。若是你须要一个例子,DrawerLayout就是利用它实现扫滑。Flavient Laurent 还写了一些关于这方面的优秀文章。
PopupWindow——Android处处都在使用PopupWindow ,甚至你都没有意识到(标题导航条ActionBar,自动补全AutoComplete,编辑框错误提醒Edittext Errors)。这个类是建立浮层内容的主要方法。
Actionbar.getThemrContext()——导航栏的主题化是很复杂的(不一样于Activity其余部分的主题化)。你能够获得一个上下文(Context),用这个上下文建立的自定义组件能够获得正确的主题。
ThumbnailUtils——帮助建立缩略图。一般我都是用现有的图片加载库(好比,Picasso 或者 Volley),不过这个ThumbnaiUtils能够建立视频缩略图。译者注:该API从V8才开始支持。
Context.getExternalFilesDir()———— 申请了SD卡写权限后,你能够在SD的任何地方写数据,把你的数据写在设计好的合适位置会更加有礼貌。这样数据能够及时被清理,也会有更好的用户体验。此外,Android 4.0 Kitkat中在这个文件夹下写数据是不须要权限的,每一个用户有本身的独立的数据存储路径。译者注:该API从V8才开始支持。
SparseArray——Map的高效优化版本。推荐了解姐妹类SparseBooleanArray、SparseIntArray和SparseLongArray。
PackageManager.setComponentEnabledSetting()——能够用来启动或者禁用程序清单中的组件。对于关闭不须要的功能组件是很是赞的,好比关掉一个当前不用的广播接收器。
SQLiteDatabase.yieldIfContendedSafely()——让你暂时中止一个数据库事务, 这样你能够就不会占用太多的系统资源。
Environment.getExternalStoragePublicDirectory()——仍是那句话,用户指望在SD卡上获得统一的用户体验。用这个方法能够得到在用户设备上放置指定类型文件(音乐、图片等)的正确目录。
View.generateViewId()——每次我都想要推荐动态生成控件的ID。须要注意的是,不要和已经存在的控件ID或者其余已经生成的控件ID重复。
ActivityManager.clearApplicationUserData()—— 一键清理你的app产生的用户数据,多是作用户退出登陆功能,有史以来最简单的方式了。
Context.createConfigurationContext() ——自定义你的配置环境信息。我一般会遇到这样的问题:强制让一部分显示在某个特定的环境下(倒不是我一直这样瞎整,说来话长,你很难理解)。用这个实现起来能够稍微简单一点。
ActivityOptions ——方便的定义两个Activity切换的动画。 使用ActivityOptionsCompat 能够很好解决旧版本的兼容问题。
AdapterViewFlipper.fyiWillBeAdvancedByHostKThx()——仅仅由于很好玩,没有其余缘由。在整个安卓开源项目中(AOSP the Android ——pen Source Project Android开放源代码项目)中还有其余颇有意思的东西(好比
GRAVITY_DEATH_STAR_I。不过,都不像这个这样,这个确实有用
ViewParent.requestDisallowInterceptTouchEvent() ——Android系统触摸事件机制大多时候可以默认处理,不过有时候你须要使用这个方法来剥夺父级控件的控制权(顺便说一下,若是你想对Android触摸机制了解更多,这个演讲会令你惊叹不已。)