作业调度:JobSchedule
作业调度:JobScheduleAndroid中有很多定时任务,比如定时后台更新数据,使用AlarmManager设置(详见AlarmManager定时任务)。但是这些往往会很耗电,如果偷偷的直接执行任务,用户的电量不知不觉的没了体验很不好。推荐用Jetpack中的Jetpack定时任务利器:WorkManager!1、JobSchedule从API Level 21加入的JobSchedule任
分类
深入探讨 Android 系统的核心架构与高级开发,聚焦四大组件(Activity、Service、Broadcast Receiver、Content Provider)的原理、生命周期管理和交互机制。从基础的组件构建与通信,到 Android Framework 层(如 AMS、WMS、PMS)的源码剖析和自定义扩展,提供详尽代码示例、调试技巧和性能优化策略。涵盖 JNI、AIDL、Binde
共 356 篇文章
作业调度:JobScheduleAndroid中有很多定时任务,比如定时后台更新数据,使用AlarmManager设置(详见AlarmManager定时任务)。但是这些往往会很耗电,如果偷偷的直接执行任务,用户的电量不知不觉的没了体验很不好。推荐用Jetpack中的Jetpack定时任务利器:WorkManager!1、JobSchedule从API Level 21加入的JobSchedule任

Material轻量级反馈:Snackbar了解Material Design的开发者对Snackbar不陌生,这是和Toast一样的轻量级反馈。关于Toast详见Toast:前后台弹出Toast不一致?。1、SnackbarSnackbar和Toast类似,方法也都差不多。Snackbar继承自BaseTransientBottomBar。1.1、使用SnackbarSnackbar不是系统自带
SharedPreferences应用开发中常常需要保存一些简单的状态,比如时间、开关状态等,使用数据库有点大材小用,Android系统有专门的数据结构用来保存简单的数据:SharedPreferences。通常配合设置界面保存各种设置项状态,详见《PreferenceScreen 设置项》及《PreferenceFragmentCompat 设置界面》。1、SharedPreferencesSh

ViewPager进化版:ViewPager2大名鼎鼎的翻页视图ViewPager和RecyclerView一样被众多广大的应用使用,抖音上下滑动观看视频用的主控件就是ViewPager。继ViewPager翻页控件,Google又推出了它的升级版本ViewPager2。1、ViewPager2“上一任”ViewPager有一些瑕疵,于是Google就推陈出新搞出了个ViewPager 2.0。1
Android UriUri在Android也是比较常见的一个工具类,最常用的场景是通过Uri可以访问特定的ContentProvider,其次通过Uri启动特定的界面。应用也可以添加定义处理一些Uri,也就是熟悉的DeepLink,详见Android DeepLink跳转。1、Uri什么是Uri?统一资源标识符(Uri)是一串字符串,用于标识抽象资源或物理资源。Android还提供了两个Uri工
Android meta-data用法Android技术比较多、杂、散,需要自己构建合适的知识栈,思维图谱,将这些细碎的技术组织起来。比如提到Activity立马就能迁出Activity相关的技术点(启动流程、Intent、Window、ContextThemeWrapper、Activity生命周期等等)。1、<meta-data />标签第一次在AndroidManifest.xml中看到<m

布局动画:LayoutTransition1、LayoutTransition介绍Layouttransition位于android.animation包中,Google从API 11时引入这个Layouttransition工具类,专门用来处理ViewGroup布局发生变化时对子控件进行动画处理。比如一组数据在ViewGroup中显示,这个时候如果添加或者删除其中的数据,同时伴随着每个item的

更简单的动画实现:ViewPropertyAnimator前面学习了补间动画,属性动画创建动画,相对来说比较专业,但也显得繁琐。只要在View层中实现一个简单的动画需要创建各种辅助的类对象,还好Android又提供了一条路,让开发者直接操作View来添加动画。1、ViewPropertyAnimatorAndroid比较让人头疼的是提供了很多方法可以实现相同的目的(API太多)。动画也是,前面已经

属性动画关键帧:keyframe上次介绍学习了PropertyValuesHolder《属性动画:PropertyValuesHolder》,其中还提到一个ofKeyframe()的构造方法,传入Keyframe参数。今天单独专门学习一下什么是Keyframe关键帧。1、KeyframeKeyframe类从API 11开始引入android.animation包中。1.1、介绍Keyframe包含

属性动画:PropertyValuesHolder前面属性动画学习的过程中,在ValueAnimator中提到过ValueAnimator.ofPropertyValuesHolder(PropertyValuesHolder... values)构造方法(详见《属性动画:ValueAnimator及其监听器》3.1节),还有ObjectAnimator中也提到过ObjectAnimator.of

属性动画的XML实现补间动画的四种动画都可以通过代码实现,也可以通过xml实现,详见《补间动画:Tween Animation》。属性动画也可以通过XML的方式快速实现。和Animation动画src/main/res/anim目录不同,Animator动画xml放在src/main/res/animator目录下。1、ValueAnimator<animator/>标签对应ValueAnimat

属性动画集合:AnimatorSet前面学习了属性动画ValueAnimator和ObjectAnimator。它们一次只能执行一个动画,实际需求需要多个动画来组合才能达到效果,Android为属性动画也提供了属性动画合集AnimatorSet。补间动画的组合通过AnimationSet实现,详见《补间动画:Tween Animation》。1、AnimatorSet简介AnimatorSet继承

属性动画:TypeEvaluator视图动画借助Interpolator插值器改变动画执行的速率实现不同的视觉效果,属性动画也可以使用Interpolator,关于插值器详见《动画插值器Interpolator》。此外属性动画还额外增加了一个类叫TypeEvaluator估值器。1、TypeEvaluatorTypeEvaluator改变的是数值,Interpolator加速的是时间。1.1、Ty

属性动画:ObjectAnimator上一篇介绍的属性动画:ValueAnimator较为简单,会发现只能基于数值的变化对View进行设置,而且只能通过给ValueAnimator添加AnimatorUpdateListener监听器来监听数值变化,进而在回调方法中根据实时变化的数值设置View的属性。继续介绍属性动画中另一个更复杂的Animator,不再需要实现ValueAnimator.Ani

属性动画:ValueAnimator前面了解的是视图动画,改变View的绘制,但那也只是表面上,其实View真正的属性都没有发生变化。从API 11开始Android引入了更强大的属性动画。1、为什么引入属性动画?之前学习的视图动画(补间动画:旋转、平移、放缩、透明度)只能在界面绘制上面做文章,也就是看到的是表面的“虚幻”画面,其实View的位置还在原来的地方。举个例子,对View进行Transl