Android
文章平均质量分 89
Android进阶必备核心技能,一起学习吧~
贺兰猪
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
自定义view的基本流程
要自定义View首先需要继承View或者其子类,如果需要实现的效果比较复杂,通常需要继承View,有时候我们需要的是系统的控件再加上一些特殊的效果则可以继承View的子类(如TextView)如果是要自己设计一种布局或者要组合其他控件,这时候就需要继承ViewGroup或者LinearLayout、FrameLayout等系统自带的布局首先需要新建res/values/custom_view_attrs.xml,并在里面声明如下然后就可以在xml布局文件中声明了。转载 2023-04-24 22:14:47 · 473 阅读 · 1 评论 -
插件化之APK动态加载
插件化相关概念:根据组件化与插件化的区别来了解一下概念组件化和插件化的区别组件化:是将一个APP分成多个模块,每个模块都是一个组件(module),开发的过程中我们可以让这些组件相互依赖或者单独调试部分组件,但是最终发布的时候将这些组件合并成一个统一的APK。插件化:是将整个APP拆分成很多模块,每个模块都是一个APK(组件化的每个模块是一个lib),最终打包的时候将宿主APK和插件APK分开打包,插件APK通过动态下发到宿主APK。插件化的优点减小安装APK的体积,按需下载模块原创 2023-04-17 15:12:20 · 1996 阅读 · 0 评论 -
android hook(Toast BadTokenException案例)
hook 技术又叫做钩子函数,在系统没有调用该函数之前,钩子程序先捕捉该消息,钩子函数先得到控制权,这时钩子函数即可以加工处理(改变)该函数的执行行为,还可以强制结束消息的传递。简单来说,就是把系统的程序拉出来,变成我们自己执行的代码片段。原创 2023-04-16 15:48:43 · 521 阅读 · 0 评论 -
Android插件化开发指南——类加载器
曾在JVM虚拟机知识点浅析总结中提到过在Java中的类加载器。我们知道Java中类的加载由类加载器完成,类加载器通常由JVM提供,这些类加载器也是前面所有程序运行的基础,JVM提供的这些类加载器通常被称为系统类加载器。除此之外,开发者可以通过继承ClassLoader基类来创建自己的类加载器。启动类加载器(Bootstrap ClassLoader);主要负责加载 jre\lib\rt.jar 中的JDK文件。扩展类加载器(Extension ClassLoader);转载 2023-04-10 17:30:11 · 464 阅读 · 0 评论 -
主线程与子线程之间相互通信(HandlerThread)
平时,我们一般都是在子线程中向主线程发送消息(要在主线程更新UI),从而完成请求的处理。那么如果需要主线程来向子线程发送消息,希望子线程来完成什么任务。该怎么做?这就是这篇文章将要讨论的内容。原创 2023-03-24 14:59:48 · 3865 阅读 · 0 评论 -
Listview 和 Recyclerview 的区别
listview的用法继承BaseAdapter,需要重写四个方法不强制使用viewholder可以直接使用item的点击事件不用单独设置分隔线不可以定向刷新某一条数据@Override@Override@Override@Override} else {recycleview的用法继承的是Recycleview.Adapter必须使用viewholder,封装了view的复用。原创 2023-03-21 17:29:22 · 422 阅读 · 0 评论 -
AIDL 详细介绍及使用
从某种意义上说AIDL其实是一个模板,因为在使用过程中,实际起作用的并不是AIDL文件,而是据此而生成的一个IInterface的实例代码,AIDL其实是为了避免我们重复编写代码而出现的一个模板。方法入手,在上面的代码中可以看到,主要的作用就是根据传入的Binder对象转换成客户端需要的 IMyAidlInterface 接口。服务端的代码差不多就这些,下面我们来看看客户端的,客户端也是需要 AIDL 文件的,可以从服务端中复制过来。看完上面方法的介绍,我们回过头来看看 AIDL 例子中实现的流程。原创 2023-03-20 18:47:19 · 8381 阅读 · 0 评论 -
Android WorkManager使用介绍
新建一个MyWork类继承Worker类,重写dowork()方法,在其中添加希望由WorkManager 运行的工作任务@NonNull@Override//任务的具体行为doWork()将返回执行结果Result,会通知WorkManager服务工作是否成功,以及工作失败时是否应重试工作。Result.success():工作成功完成。Result.failure():工作失败。Result.retry():工作失败,应根据其重试策略在其他时间尝试。转载 2023-03-20 11:51:42 · 858 阅读 · 0 评论 -
模块化开发的application问题
模块化开发是为了实现解耦,加速打包,模块调试等原创 2023-03-16 16:22:23 · 309 阅读 · 0 评论 -
四大组件之广播
广播是程序组件之间的传输消息的机制,广播的内容是一个intent,在其中携带数据,他没有用户界面。原创 2023-03-15 14:25:44 · 435 阅读 · 0 评论 -
SurfaceView与普通view的区别
SurfaceView第一印象它是一个view,因为它继承了View,有两个直接子类GLSurfaceView,VideoView。但根据SDK文档SurfaceView和普通的view又有较大区别。最显著的区别就是普通view和它的宿主窗口共享一个绘图表面(Surface),SurfaceView虽然也在View的树形结构中,但是它有属于自己的绘图表面,Surface 内部持有一个Canvas,可以利用这个Canvas绘制。原创 2023-03-14 22:53:58 · 746 阅读 · 0 评论 -
Android逆向之旅-Android Studio的调用So文件极简教程
函数是需要生成so文件被调用的。原创 2023-03-13 10:54:40 · 3855 阅读 · 0 评论 -
ViewModel解析
ViewModel原理转载 2023-03-07 20:16:45 · 558 阅读 · 0 评论 -
Android与JS交互详解
先来说说什么是JS交互:说的俗一点就是通过我们项目中的控件来调用HTML里的JS代码,也可以通过JS来调用项目中的代码。转载 2023-03-01 14:27:45 · 6212 阅读 · 0 评论 -
ViewPager2+TabLayout
ViewPager2+TabLayout原创 2022-11-23 19:53:20 · 9459 阅读 · 0 评论 -
DataBinding源码分析
1. 为什么配置了 dataBinding{enabled = true}之后就可以使用dataBinding方式进行开发了?Android Studio中是依靠gradle来管理项目的,在创建一个项目时,从开始创建一直到创建完毕,整个过程是需要执行很多个gradle task的,这些task有很多是系统预先帮我们定义好的,比如build task,clean task等,DataBinding相关的task也是系统预先帮我们定义好的,但是默认情况下,DataBinding相关的task在task列表原创 2022-05-26 11:42:00 · 595 阅读 · 0 评论 -
LiveData详解
先奉上LiveData官方文档地址:https://developer.android.com/topic/libraries/architecture/livedataLiveData是什么?1、LiveData是一种可观察的数据存储器类。通俗点说就是存储数据,同时可以被观察者观察数据的变化。2、LiveData具有生命周期感知能力(这玩意儿是不是很眼熟,参考上篇Lifecycle),这种感知能力可确保LiveData仅更新处于活跃生命周期状态的应用组件观察者。LiveData原理分析原创 2022-05-01 14:53:28 · 1936 阅读 · 0 评论 -
Lifecycle详解
先奉上lifecycle官方文档地址:https://developer.android.com/topic/libraries/architecture/lifecycle为什么要使用lifecycle?现状:普通组件在使用过程中通常需要依赖于系统组件(Activity/Fragment/LifecycleService)的生命周期,导致系统组件的生命周期回调方法过于臃肿。例如通常在onCreate()中对组件进行初始化,在onPause()中停止组件,在onDestroy()中对组件进行资源回收原创 2022-04-28 14:10:17 · 3168 阅读 · 1 评论 -
全面详解Android实现多线程的几种方式(史上最全,最详细)
一、前言Android多线程实现方式包括:1、基础使用继承Thread类 实现Runnable接口 Handler2、复合使用AsyncTask HandlerThread IntentService3、高级使用线程池(ThreadPool)接下来对这几种实现多线程的方式进行全面 讲解。二、基础使用Android多线程实现的基础使用包括:继承Thread类 实现Runnable接口 Handler接下来对各个进行分析。1、继承Thread类1.1 简介转载 2022-04-22 11:46:51 · 22970 阅读 · 8 评论 -
为什么使用Fragment
从API 11,Google在Android之中加入了Fragment,一个轻量级的,可复用的,模块化的UI组件,其目的是为了解决不同屏幕分辩率的动态和灵活UI设计。平板电脑的设计使得其有更多的空间来放更多的UI组件,而多出来的空间存放UI使其会产生更多的交互。 Fragment号称是轻量级的Activity,它有着Activity的部分功能,比如有生命周期,可以显示UI元素,可以有控制逻辑。Fragment的优点 可以轻松创建动态灵活的UI设计,...原创 2022-04-15 11:07:33 · 1019 阅读 · 0 评论 -
Android事件分发机制
转载自https://www.jianshu.com/p/555ffeb64e68 虽然重复挺多 但是看完后确实清晰明朗了很多参考资料1. https://blog.youkuaiyun.com/ClAndEllen/article/details/793653692. https://www.jianshu.com/p/7661c871dd41总结1. 为什么会有事件分发机制安卓上面的View是树形结构的,View可能会重叠在一起,当点击的地方有多个View可以响应的时候,这个点击事件...转载 2021-01-13 10:41:32 · 1096 阅读 · 1 评论 -
Android 横竖屏切换时Activity生命周期变化
1、新建一个Activity,并把各个生命周期打印出来onCreate,创建activity时调用。设置在该方法中,还以Bundle中可以提出用于创建该 Activity 所需的信息。onStart,activity变为在屏幕上对用户可见时,即获得焦点时,会调用。onResume,activity开始与用户交互时调用(无论是启动还是重新启动一个活动,该方法总是被调用的)onSaveIn...原创 2019-09-16 14:32:50 · 1621 阅读 · 0 评论 -
MVC/MVP/MVVM
1、MVC1.1 Android中MVC是什么?特点?Model:针对业务模型建立的数据结构和类(与View无关,只与业务相关),它主要负责网络请求,数据库处理,I/O等的操作。 View:XML/JAVA或者JS+HTML进行页面的显示。Activity/Frgament也承担了View的功能。 Controller:Android的控制层通常在Activity、Fragment之中...原创 2019-09-17 19:17:04 · 467 阅读 · 0 评论 -
EventBus
1、EventBus 简介EventBus是一种用于Android的事件发布-订阅总线,由GreenRobot开发,Gihub地址是:EventBus。它简化了应用程序内各个组件之间进行通信的复杂度,尤其是碎片之间进行通信的问题,解耦事件的发送者和接收者,避免复杂和容易出错的依赖和生命周期的问题。1.1 三个角色及关系发布者通过EventBus发布事件,订阅者通过EventBus订...原创 2019-09-09 11:42:57 · 171 阅读 · 0 评论 -
Android高级进阶知识(这是总目录索引)
发现了大神目录框架,Mark一下转自简书博主ZJ_Rocky 原文链接https://www.jianshu.com/p/0680be542f6e这篇文章是对接下来要写的文章的一个目录说明,这个系列主要是针对安卓的进阶知识的系统阐述或者描述,其中或者引用或者举例说明或者分析源码,总之目标是:掌握知识并且能应用知识,同时希望如果有想要了解的知识可以在文章底下提出一起交流一.View的绘制1)setContentView()的源码分析2)SnackBar的源码分析3)利用decorVi..转载 2020-07-11 18:02:40 · 436 阅读 · 0 评论 -
Android多线程
Android单线程模型启动一个APP的时候,Android系统就会启动一个Linux Process,这个进程包含一个Thread,称为UI Thread或Main Thread。通常一个应用的所有组件都运行在这一个Process中,当然,你可以通过修改四大组件在Manifest.xml中的代码块中相应的android:process属性指定其运行在不同的process中。UI Thread中运行着许多重要的逻辑,如系统事件处理(System Events),用户输入事件处理(Input原创 2020-07-11 16:16:15 · 650 阅读 · 0 评论 -
Android Gradle使用--详细版
关于gradle已经有很多贴子说的非常具体了https://blog.youkuaiyun.com/u014608640/article/details/77991899有一点点更新,有时间再补充上去 =。=原创 2020-06-12 17:26:12 · 1548 阅读 · 0 评论 -
组件化和模块化对比
项目里面组件化开发和模块化开发都是常用手段,关于两者的区别有必要进行一下梳理。概念:组件:把重复的代码提取出来合并成为组件,功能相对单一,主要目的是重用。位于框架最底层,可供不同功能使用/依赖,独立性强。模块:按功能/业务来进行隔离(分装)成独立的模块,在划分时需要把控颗粒度(界定模块的功能范围)。不同模块之间也会存在依赖关系(单向依赖,如module A依赖于module B,那么B不能依赖A),基本都是业务性的跳转,从地位上来说它们都是平级的。优点:组件:组件化的重点就是重用,.原创 2020-06-02 10:42:33 · 1539 阅读 · 0 评论
分享