![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
android
文章平均质量分 59
momo_ibeike
这个作者很懒,什么都没留下…
展开
-
Android 架构组件简单小结
Android官方提供了一组架构组件(Android Architecture Components)用来帮助开发者创建健壮、易测试和可维护的apps。包括Lifecycle、LiveData、ViewModel和Room Persistence Library。LifecycleLifecycle是一个包含组件(比如Activity或者Fragment)生命周期信息的类。Lifecycle用两种枚原创 2017-09-15 14:31:37 · 183 阅读 · 0 评论 -
Doze 和 StandBy模式
官方地址:低电耗和待机模式Doze低电耗模式Android 6.0(API 级别 23)引入了低电耗模式,当用户设备未插接电源、处于静止状态且屏幕关闭时,该模式会推迟 CPU 和网络活动,从而延长电池寿命。而 Android 7.0 则通过在设备未插接电源且屏幕关闭状态下、但不一定要处于静止状态(例如用户外出时把手持式设备装在口袋里)时应用部分 CPU 和网络限制,进一步增强了低电耗模...原创 2018-03-09 17:11:04 · 1211 阅读 · 0 评论 -
Data Saver 小节
官方地址:Data Saver优化网络流量消耗在智能手机的整个生命周期,移动数据网络计划的成本通常会超出设备本身的成本。 从 Android 7.0(API 级别 24)开始,用户可以在整个设备上启用流量节省程序,以优化其设备的流量消耗,并减少流量消耗。 无论是在漫游、账单周期即将结束,还是使用少量的预付费数据包,此功能都特别有用。检查流量节省程序首选项 Connectivit...原创 2018-03-09 17:36:07 · 1944 阅读 · 0 评论 -
FileProvider小记
官方地址:FileProvider FileProvider是ContentProvider的特殊子类,可以安全的分享文件通过创建content:// Uri来替代file:/// Uri。使用步骤This overview of FileProvider includes the following topics:manifest配置FileProvider指定paths路...原创 2018-03-09 18:20:50 · 345 阅读 · 0 评论 -
虚拟机调用方法之ArtMethod
原创 2018-05-09 12:40:06 · 4227 阅读 · 0 评论 -
内部拦截法的真正原理
原理分析在处理滑动事件冲突的时候,一般采用外部拦截或者内部拦截的方法。外部拦截比较简单,这里主要说说内部拦截。说道拦截就不得再回顾一下事件分发的原理,网上有很多的文章进行分析。这里还是从源码的角度梳理,虽然流程图可能显得清晰,但是源码如果理解清楚,我觉得才能真正的活学活用。//第一步if (actionMasked == MotionEvent.ACTION_DOWN) { c...原创 2018-08-11 17:50:13 · 2254 阅读 · 2 评论 -
从源码角度看Service绑定过程
Service绑定从ContextWrapper开始的。@Override public boolean bindService(Intent service, ServiceConnection conn, int flags) { return mBase.bindService(service, conn, flags); ...原创 2018-08-15 16:20:40 · 285 阅读 · 0 评论 -
属性动画源码分析
3.0之后安卓提供了属性动画,属性动画除了可以应用在View上,实际上根据实现机制可以应用在任意一个对象上。本文基于API27进行分析,属性动画相关的类有ValueAnimator、ObjectAnimator、PropertyValuesHolder、TypeEvaluator、Interpolator等。 以ValueAnimator为例,ValueAnimator创建开始分析。...原创 2018-08-20 14:02:48 · 260 阅读 · 0 评论 -
沉浸式与状态栏导航栏透明
沉浸式沉浸式是一种完全的全面屏体验,是指状态栏和导航栏被隐藏的全面屏展示。android 4.0 以下在4.0以下可以通过WindowManager.LayoutParams.FLAG_FULLSCREEN 来隐藏状态栏,一般来说隐藏状态栏也需要隐藏ActionBar,所以代码实现如下:getWindow().addFlags(WindowManager.LayoutParams.FLAG...原创 2018-10-25 18:10:32 · 1666 阅读 · 0 评论 -
WakeLock小计
由于手机存在休眠策略,所以停止使用一点时间后CPU可能会停止运行进入休眠状态,为了保持CPU的一直唤醒,安卓提供了WakeLock相关API,这里做个简单小结。为了获取WakeLock,先要拿到PowerManager。PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);然后从PowerM...原创 2018-03-09 16:15:58 · 219 阅读 · 0 评论 -
Gradle闭包委托总结
作为一个还处于入门Gradle的小白,记录一下对Gradle闭包委托的理解。 比如在 《Android Gradle权威指南》 可以看到类似如下代码段:static def person(Closure<Person> closure) { Person p = new Person() closure.delegate = p closure.setRe...原创 2018-02-08 16:37:40 · 1190 阅读 · 0 评论 -
Lifecycle启动源码分析
首先从Lifecycle的manifests文件说起:<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="android.arch.lifecycle.extensions" android:versionCode="1" android:versionName="1.0"原创 2017-09-15 16:33:59 · 1214 阅读 · 1 评论 -
先说说ListView是如何实现addHeaderView的
在谷歌推出RecyclerView之后,由于其强大的解耦和定制能力等优势,现在项目中已经基本采用RecyclerView来替代传统的ListView了,不过RecyclerView并没有提供之前ListView中应用非常广泛的addHeaderView和addFooterView方法。今天首先来分析一下传统的ListView是如何实现的,之后会基于这种思路来讨论如何为RecyclerView添加这个原创 2017-09-24 12:39:08 · 695 阅读 · 0 评论 -
参考ListView为RecyclerView添加Header、Footer和Loader
上一篇博客中分析了ListView添加Header的原理,接下来我们就参考listview的实现原理来为RecyclerView添加Header。RecyclerView的Adapter已经不再是基于View进行复用,而是基于ViewHolder进行复用;创建viewholder是基于重写的view type方法。因此,我们在recyclerview中直接保存View的集合,由于recyclervi原创 2017-09-27 10:33:10 · 255 阅读 · 0 评论 -
AsyncTask源码分析
AsyncTask是Android提供的一个异步加载任务的工具类,AsyncTask源码其实不是特别复杂,不过由于在Android3.0后进行了修改,导致AsyncTask的使用还是很容易入坑的。public final AsyncTask<Params, Progress, Result> execute(Params... params) { return executeOnEx原创 2017-10-13 12:28:54 · 176 阅读 · 0 评论 -
自定义Gradle插件
安卓开发中有时候需要自定义Gradle插件,本文讲讲如何自定gradle插件,并将插件部署到本地再应用到工程中。 AS中没有直接创建gradle的工程,我们先创建一个标准的Android工程,然后创建一个单独的module:gradleLibrary,在gradleLibrary中实现自定义插件的功能。 创建module删除多余目录,只保留如下结构: 1.首先需要建src/main/g原创 2018-01-03 16:25:52 · 168 阅读 · 0 评论 -
GridLayoutManager 高度与设定不一致的坑
最近在使用GridLayoutManager的时候,效果什么的都是好好的,突然在一台设备上发现item高度和设定值不一样。找了好久的原因发现是老版本GridLayoutManager的坑。特作此篇做个记录,并简单分析GridLayoutManager的源码。GridLayoutManager继承自LinearLayoutManager,LinearLayoutManager初始化的时候默认方向是垂直原创 2017-12-27 18:54:42 · 10434 阅读 · 0 评论 -
BitmapFactory.Options
BitmapFactory.Options与drawable之间的关系在开发安卓程序的时候,我们经常把图片放在[drawable][6]、[drawable-hdpi][6]等等下,这对解析出的bitmap有什么影响吗?解析一张drawable图片走的方法:Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.原创 2018-01-23 16:06:43 · 198 阅读 · 0 评论 -
layout_marginEnd 导致动态设置setLayoutParams失效的巨坑
targetSdkVersion >= JELLY_BEAN_MR1(17)时,在xml布局中我们设定marginLeft或marginRight会看到这种提示“Consider adding android:layout_marginEnd="@dimen/xx" to better support right-to-left layouts less... ”意思是说让我们加上layo原创 2018-01-25 15:06:24 · 3694 阅读 · 1 评论 -
RecycledViewPool的巧用
RecycledViewPool作为RecycledView的缓存池,还是有很多实用的地方的,这里记录分享一下RecycledViewPool的巧用。场景一:RecycledViewPool公用开发中经常有这种场景:我们有多个页面,使用ViewPager结合Fragment来切换,每个Fragment内部都是RecycledView。如果多个页面存在相同类型的ViewHolder ,我们可以让...原创 2018-11-10 21:55:22 · 5973 阅读 · 0 评论