![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android
文章平均质量分 78
普通网友
这个作者很懒,什么都没留下…
展开
-
Android 端内数据状态同步方案VM-Mapping,【架构师必备】
eventbus注册在Activity or 其它页面上,收到事件后,遍历数据列表,更新,然后通过RecyclerView的onDataItemChanged方法局部更新。但是在很多场景,比如西瓜feed,feed框架之下的view层次非常深。很多时候Rd只关注某类卡片下的某个UI组件,Feed框架和顶层页面容器离的很远,修改成本高,容易出错,对feed框架或者顶层容器的侵入比较大。另外,onDataItemChanged的局部更新是ViewHolder 对应的itemView的,这个维度比较大,并不能刷.原创 2021-09-09 20:36:15 · 434 阅读 · 1 评论 -
Android 架构组件的最新进展,Android面试题及答案2020
根据我们曾经做的调查,开发者们希望 Android 官方可以维护一些实用的组件库和架构实践,以降低中大型应用的开发门槛,这样开发团队就可以集中更多精力在实际业务的优化和改进上。Jetpack 项目正是为了解决这些问题而诞生的,Jetpack 是一系列助力您更容易打造优秀 Android 应用的工具和组件,这些组件能帮助您遵循最佳实践、免除编写繁复的样板代码并简化复杂任务,从而使您可以专注于最核心的代码逻辑。其中 androidx.* 库与 Framework API 解耦,这能够提供向后兼容的同时,也能更原创 2021-09-09 20:32:53 · 186 阅读 · 0 评论 -
Android 教你一步步搭建MVP,附项目源码
@Overridepublic void onFailure(Call<Book> call, Throwable t) {}});`这里我们可以看到,先新建了一个Retrofit对象,然后给它设置一个我们前面说的baseUrl`https://api.douban.com/v2/`.因为接口返回的数据不是我们需要的实体类,我们需要调用addConverterFactory方法进行转换。由于返回的数据为json类型,所以在这个方法中传入Gson转换工厂`GsonConvert原创 2021-09-09 20:31:12 · 445 阅读 · 0 评论 -
【带着问题学,看完豁然开朗
1.一个程序至少有一个进程,一个进程至少有一个线程,可以把进程理解做 线程的容器;2.进程在执行过程中拥有 独立的内存单元,该进程里的多个线程 共享内存;3.进程可以拓展到 多机,线程最多适合 多核;4.每个独立线程有一个程序运行的入口、顺序执行列和程序出口,但不能独立运行,需依存于应用程序中,由应用程序提供多个线程执行控制;5.「进程」是「资源分配」的最小单位,「线程」是 「CPU调度」的最小单位6.进程和线程都是一个时间段的描述,是 CPU工作时间段的描述,只是颗粒大小不同。1.3 协作.原创 2021-09-08 13:44:20 · 261 阅读 · 0 评论 -
【字节大牛疯狂教学,并发知识体系大全
其中,onMainFrameFinished 取第一个非主请求 (HTML) 的资源被拦截的时机。对于绝大多数页面来说,此时已经完成主请求 (HTML) 的下载,并已经开始解析;可以粗略代表主请求流程结束。(2)W3C Performance Timing与客户端回调相比,W3C Performance Timing 提供了更细致的加载过程信息,但是不包含 WebView 开始初始化的时间点。下图中仅列出部分:2. 各端单独采集的局限(1)前端采集的局限无法独立获取 WebVi..原创 2021-09-08 13:42:39 · 108 阅读 · 0 评论 -
【好文推荐,直面春招
// GradleWrapperMainpublic static void main(String[] args) throws Exception { // ... WrapperExecutor wrapperExecutor = WrapperExecutor.forWrapperPropertiesFile(propertiesFile); wrapperExecutor.execute( args, new Install(logg原创 2021-09-08 13:41:00 · 161 阅读 · 0 评论 -
【备战金九银十系列,最新Android面试合集
Activity 上有 Dialog 的时候按 Home 键时的生命周期两个 Activity 之间跳转时必然会执行的是哪几个方法?前台切换到后台,然后再回到前台,Activity 生命周期回调方法。 弹出 Dialog,生命值周期回调方法。Activity 的四种启动模式对比Activity 状态保存于恢复fragment 各种情况下的生命周期是如何管理的Service 的开启方式,原理是怎样的?请描述一下 Service 的生命周期请描述一下广播 BroadcastReceiver 的.原创 2021-09-08 13:39:24 · 110 阅读 · 0 评论 -
【吐血整理,flutter技术入门与实战
掌门教育笔试逻辑题Java有哪些数据结构Arraylist是线程安全的吗String,StringBuilde,StringBuffer的区别Java中的锁介绍一下,同步锁举例四大引用区别,场景举例Activity生命周期Fragment生命周期Fragment销毁生命周期执行顺序自定义流程,举例自定义View刷新方式有哪些,执行流程事件分发原理,举例,延伸滑动冲突怎么解决怎么自己实现一个长按事件Service是哪个线原创 2021-09-08 13:37:35 · 900 阅读 · 0 评论 -
【从源码上提升Android,请查收
current = pendingRequestManagerFragments.get(fm); if (current == null) { current = new RequestManagerFragment(); current.setParentFragmentHint(parentHint); if (isParentVisible) { current.getGlideLifecycle().onStart(); } ...原创 2021-09-08 13:34:09 · 61 阅读 · 0 评论 -
Android开发之MVVM模式实践(四,大厂直通车
fun apiA(object: callback(){ 获取 —> 结果A 调用 —> 接口AB执行完毕检测方法()} )fun apiB(object: callback(){ 获取 —> 结果A 调用 —> 接口AB执行完毕检测方法()} )fun 接口AB执行完毕检测方法(){ if( 结果A!=null && 结果B!=null ){ apiC(结果A , 结果B, object: callback(){ 调用 —原创 2021-09-07 16:45:19 · 80 阅读 · 0 评论 -
Android开发一年,Android面试总结
为什么使用MVP,它的优势是什么,内存泄漏是什么样的。http的长连接和短连接这两个概念,怎么去理解。http一整个流程,什么Baidu.com输入,经过了什么。RecyclerView的一个复用机制,和ListView的一个区别在哪里HashMap、ConcurrentHashMap、Hashtable的问题,数据结构,线程安全啊之类的问题了,当然还是考了version 1.7和1.8。一个app的启动流程,冷启动和热启动。一道算法题三值之和求目标值。二面(4..原创 2021-09-07 16:42:05 · 373 阅读 · 0 评论 -
Android开发6年,阿里P7大佬手把手教你
这家是招RN的.一面2个面试官一起面的。react的生命周期RN怎么和原生通信互调说说redux使用RN时的一些坑点有没有真正写过RN,然后上架过APP你使用的路由框架是什么说说promiseandroid各版本适配的问题(这个能扯,说了挺长时间)大致就是这些,有点尴尬的是,我react写的都是erp系统,RN这块确实没真正去写过APP上架.技术问题倒都不是很难.二面虽然一面答的不咋地,还是约我二面了问题大致和一面差不多,我觉得挺诧异的,可能是让另一个项目组来面我.然后就原创 2021-09-07 16:40:15 · 203 阅读 · 0 评论 -
Android应用测速组件实现原理,这篇看完还不懂跟我去摆地摊,全网首发
apply plugin: 'rabbit-tracer-transform'为了支持网络监控功能,需要在OkHttpClient初始化时插入拦截器(目前只支持OkHttp的网络监控):OkHttpClient.Builder().addInterceptor(Rabbit.getApiTracerInterceptor())后面会考虑把Interceptor的初始化做成AOP的方式。除此之外Rabbit的测速功能不需要其他的初始化代码,接下来就大概过一下上面功能的实现原理:应用onC原创 2021-09-07 16:38:33 · 465 阅读 · 0 评论 -
Android应用架构的发展和实践,万字总结
上面的阶段能做到功能模块的重用,但是没有涉及到业务逻辑的重用。新项目也有登录注册功能,难道要重新写一遍么?你可能担心两个项目的登录注册逻辑能一样么,界面也不可能一样啊。界面肯定是不一样的,但是登录注册逻辑大部分是一样的。这就说明我们其实可以对一些公共业务划分Module,对于不一样的地方,完全可以动态化。但是公共业务不能划入类库Module中,因为通用性不够;还要注意业务Module的抽离本着只抽业务,不抽UI的原则。当业务Module和类库Module抽离之后,不同的项目我们可以添加不同的入口Modu原创 2021-09-07 16:36:48 · 69 阅读 · 0 评论 -
Android应用ViewDragHelper详解及部分源码浅析,安卓已死
1 背景========很久没有更新博客了,忙里偷闲产出一篇。写这片文章主要是去年项目中的一个需求,当时三下五除二的将其实现了,但是源码的阅读却一直扔在那迟迟没有时间理会,现在拣起来看看吧,否则心里一直不踏实。关于啥是ViewDragHelper,这里不再解释,官方下面这个解释已经很牛逼了,如下:/** * ViewDragHelper is a utility class for writing custom ViewGroups. It offers a number * of use原创 2021-09-07 16:35:15 · 211 阅读 · 0 评论 -
Android架构进阶之高级UI系列(精编解析,Android经典面试
// 需要延迟的任务,最终还是执行上述两个事件 doScheduleCallback(msg.arg1); break; } }}3. 注意 USE_VSYNC,用于判断当前是否启用 VSYNC 机制,Android 在 4.1 之后默认开启该机制。private static final boolean USE_VSYNC = SystemProperties.getB...原创 2021-09-06 16:46:53 · 215 阅读 · 0 评论 -
Android架构组件JetPack之Room(三,Android岗面试必问
public String city;@ColumnInfo(name = "post_code")public int postCode;}@Entityclass User {@PrimaryKeypublic int id;public String firstName;@Embeddedpublic Address address;}以上代码所产生的User表中,Column 为`id, firstName, street, state, city, post_c.原创 2021-09-06 16:45:21 · 162 阅读 · 0 评论 -
Android架构师:你的业务代码,Android小技巧
又假设产品里有一个地方需要**“拉取用户信息”**,也将把“登录Activity”里“拉取用户信息”的代码复制一遍。封装复用的道理谁都懂,拷贝代码的坏处也谁都明白,那为什么大家还这么做,代码越来越“腐烂”呢?根据个人经验,主要是这么几点原因:(1)早期业务压力大,APP是少数几个同学的,没有提前做规划;(2)后期代码越来越臃肿,不敢动,一动怕影响功能,怕出问题,怕担责任;(3)项目中,是以功能界面进行编码划分的,一个同学会同时负责MVC三部分编码,加之项目压力又大,既然是一个人写,就没必要分层了,原创 2021-09-06 16:43:40 · 158 阅读 · 0 评论 -
Android插件化-Activity篇,腾讯安卓开发面试
@param context@param pluginName 插件名*/public static void copyApk(Context context, String pluginName) {DePluginSP sp = DePluginSP.getInstance(context);//获取插件apk保存路径String filePath = sp.getString(Constants.COPY_FILE_PATH, “”);if (TextUtils.isEmpty(fi..原创 2021-09-06 16:42:01 · 245 阅读 · 0 评论 -
Android控制之垂直滚动广告条ViewFLipper解析,看完直呼内行
android:outAnimation="@anim/anim_out" android:layout_gravity="center"/> ```就是在FrameLayout里嵌入一个ViewFlipper这里的属性 inAnimation和outAnimation是子元素的出入动画,通过设置这两个值才能展现动画效果,接下来看一下这个动画的xml代码,首先是anim_in.xml,很简单的进入动画,Y轴位置从下面100%移动到位置0,动画持续1s<?xml ve...原创 2021-09-06 16:40:21 · 326 阅读 · 0 评论 -
Android基础到进阶四大组件之ContentProvider详解,开源新作
public void addUri(String authority, String path, int code) authority表示匹配的授权者名称;path表示数据路径;code表示返回代码。下面咱搞个实例://这里的名称必须与AndroidManifest.xml中android:authorities保持一致public static final String AUTHORITY = "com.scc.userprovider";//数据路径pu.原创 2021-09-05 15:57:48 · 136 阅读 · 0 评论 -
Android基础到进阶UI爸爸级 TextView介绍+实例,感悟分享
android:layout_height=“wrap_content”android:autoLink=“email|phone”android:gravity=“center_vertical”android:layout_marginTop="@dimen/dimen_10"android:text=“可点击跳转邮件:SCC5201314@qq.com\n可点击跳转电话:0215201314”android:textColor="@color/color_188FFF"android:te原创 2021-09-05 15:56:13 · 125 阅读 · 0 评论 -
Android启动页黑屏原理解析,以及最优解决方案,10年Android开发经验
所以,我们的解决方案的切入口就是整个APP的manifest文件,更确切的说应该是主题配置文件。方案一 :开历史倒车这个方案就是禁止加载Preview Window,具体做法如下:style.xml<style name="APPTheme" parent="@android:style/Theme.Holo.NoActionBar"> <item name="android:windowDisablePreview">true</item></st原创 2021-09-05 15:52:45 · 539 阅读 · 0 评论 -
Android数据库的使用(增删改查,flutter开发
第二步:在Activity文件中初始化辅助类第三步:创建数据库(第一个button点击事件)第四步(增删改查,另外四个点击事件);插入数据–增删除数据–删更改数据–改查询数据–查下面是源码DataBaseHelp如下://创建数据库辅助类:创库,创表,更新/升级public class DataBaseHelp extends SQLiteOpenHelper { //数据库名称 public static final String DB_NAME = "原创 2021-09-03 15:36:26 · 1261 阅读 · 0 评论 -
Android技能树 — 数组,链表,散列表基础小结,真的太香了
当我们去看电影的时候,我们知道电影院门口会有一个储物柜,[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-srfshwyY-1630654469770)(https://user-gold-cdn.xitu.io/2018/4/23/162f112b7554ec08?imageView2/0/w/1280/h/960/ignore-error/1)]上面还会有连续的数字,一个抽屉连着一个抽屉。 然后你就会把你的东西放在相应号码的小抽屉中,然后进去看电影了。我们在将数据存储到原创 2021-09-03 15:34:41 · 241 阅读 · 0 评论 -
Android快速开发工具集合,爱了爱了
Step 2 app:build.gradle(以下3种引用方式,三选一即可)dependencies { //kotlin 版本 implementation 'com.github.yechaoa.YUtils:yutilskt:3.2.0' //java 版本 implementation 'com.github.yechaoa.YUtils:yutils:3.2.0' //kotlin && java 版本 .原创 2021-09-03 15:32:55 · 2540 阅读 · 0 评论 -
Android开源的精美日历控件,热插拔设计的万能自定义UI,看完直接怼产品经理
<attr name="current_month_text_color" format="color" /> <!--当前月份的字体颜色--> <attr name="other_month_text_color" format="color" /> <!--其它月份的字体颜色--> <attr name="current_month_lunar_text_color" format="color" /> <!--...原创 2021-09-03 15:31:19 · 394 阅读 · 0 评论 -
Android开发:自定义TabLayout,史上超级详细
思路梳理好了,那我们就写代码吧:情况一(关键代码): //最左边的图形 Path pathLeft = new Path(); pathLeft.lineTo(textWidth, 0); pathLeft.cubicTo(textWidth + arcControlX, arcControlY, textWidth + arcWidth - arcControlX, viewHeight - arcContro原创 2021-09-03 15:29:45 · 1134 阅读 · 0 评论 -
Android开发:你多久没涨工资了,看完必懂
“在现在这个公司都工作了3年了,一毛钱工资都没有涨…”“年前真倒霉,老板嫌我工资高,被优化了,年后又遇到了疫情,现在都还没有找到合适的工作。”“想一边工作,一边找工作,但是,哎,要么简历石沉大海,要么,问几个问题就结束了…”“刚找到一个工作,这工资比我现在的也高不了多少,去还是不去呢?”“工作这么多年了,感觉技术就是这样子,这几年时间白白浪费了”“越想越觉得自己的干这个技术没有出路,我该怎么办啊,换行业吗,还是继续干,不干我又能干什么呢?”经常能听到一些An..原创 2021-09-03 15:28:08 · 243 阅读 · 0 评论 -
ARouter讲解3_RouteProcessor,腾讯T2亲自教你
TypeMirror type_Service = elementUtils.getTypeElement(SERVICE).asType(); TypeMirror fragmentTm = elementUtils.getTypeElement(FRAGMENT).asType(); TypeMirror fragmentTmV4 = elementUtils.getTypeElement(Consts.FRAGMENT_V4).asType(); ...原创 2021-09-02 00:20:52 · 191 阅读 · 0 评论 -
Architecture(5)电商APP组件化探索,震惊
isModuleRun为false的时候,Application跟AndroidManifest都是以Library的形式参与编译,不需要启动的Activity以及自定义的Application反之则需要。isModuleRun=false无序修改<application android:allowBackup="true" android:supportsRtl="true" android:theme="@style/AppTheme"> </appli原创 2021-09-02 00:19:26 · 114 阅读 · 0 评论 -
AOP实现Android集中式登录架构,牛逼
public class MyApplication extends Application {@Overridepublic void onCreate() { super.onCreate(); LoginSDK.getInstance().init(this, new ILogin() { @Override public void login(Context applicationContext, int userDefine) {原创 2021-09-02 00:12:40 · 201 阅读 · 0 评论 -
cmake使用教程(五)-cpack生成安装包,从理论到实践
├── CPackConfig.cmake├── CPackSourceConfig.cmake├── CTestTestfile.cmake├── Makefile├── MathFunctions├── TutorialConfig.h└── cmake_install.cmake注意其中两个生成的文件`CPackConfig.cmake`,`CPackSourceConfig.cmake`,一会又大用处。下一步是按照一般的方式构建项目,然后在其上运行CPack。要构建一个二进制版本原创 2021-08-31 16:27:54 · 917 阅读 · 0 评论 -
cmake使用教程(三)-安装,Android面试超详细知识点
注意上边install的第一个参数和第三个参数。TARGETS包含六种形式:ARCHIVE, LIBRARY, RUNTIME, OBJECTS, FRAMEWORK, BUNDLE。注意Mathfunction安装的是LIBRARY,而根目录下的可执行文件是RUNTIME类型。FILE 将给定的文件复制到指定目录。如果没有给定权限参数,则由该表单安装的文件默认为OWNER_WRITE、OWNER_READ、GROUP_READ和WORLD_READ。TARGETS和FILE可指定为相对目录和绝对目录原创 2021-08-31 16:26:28 · 171 阅读 · 0 评论 -
cmake使用教程(一)-起步,膜拜大佬
用cmake来编译这段代码,进入命令行执行内部构建命令(后边会讲外部构建):cmake . 这是输出一系列的log信息-- The C compiler identification is AppleClang 9.0.0.9000039-- The CXX compiler identification is AppleClang 9.0.0.9000039-- Check for working C compiler: /Library/Developer/CommandLineTools/原创 2021-08-31 16:24:49 · 209 阅读 · 0 评论 -
Binder源码阅读指南之java层,作为Android开发程序员
// Find the service managersServiceManager = ServiceManagerNative .asInterface(Binder.allowBlocking(BinderInternal.getContextObject()));return sServiceManager;}这里使用的是单例模式,没有加线程保护,因为这个接口并不给应用使用,以及应用也不能直接操作`addService()``getService()`等接口,所以`getISer原创 2021-08-31 16:23:09 · 223 阅读 · 0 评论 -
BAT大量裁人,快35岁的程序员该何去何从,Android并发原理解析
行业前景首先我给大家分析一下,现在行业的一个情况。2018年IT界规模最大的裁员事件了。近日,面对难看的财务报表,美国最大的通讯运营商、市值2200亿美金的Verizon,遣散了4.4万名老员工。在国内,解决了80%就业的中小企业也遭遇了新一轮生存困境…社会很残酷,追求稳定的人都被时代抛弃,有远见的人,早已给自己安排了后路。Verizon,美国最大电信运营商,在美地位类同于中国移动在中国。近日Verizon传出裁员44000人的消息。裁减波及总员工的30%以上,主要针对“长期员工”原创 2021-08-31 16:21:26 · 134 阅读 · 0 评论 -
BAT同系列公司面试总结,哪些你所不知道的,秀出天际
JavaSisst:字节码修改类库,依赖字节码修改和DX类库,可以完成动态替换和切面编程。AspectJ:依赖字节码编织器,需要按照其语法来编写,需要一点“编织”时间。Xposed方案,简直是一个Bug,神器,没准以后会被Android修复呢,不仅可以改变自己的类行为还可以hook系统的方法,root过的机器还可以hook其他App和系统进程。###4.整体性能上如何保证探测以及流畅性能可以根据帧率、内存、CPU、GPU等指标的数据和表现辅助判断,可以从/proc文件夹下读取文件获取cpu、..原创 2021-08-31 16:19:41 · 56 阅读 · 0 评论 -
2020年,Android开发想自学可能吗,大概要多久,android插件化框架
有编程基础的人自学Android,想对来说会轻松一点,三个月后差不多就能参加面试,走上岗位了。没有编程基础,完全的小白想要自学Android可能会有一些难度,三个月可能不够。可能需要半年甚至更久吧。三、怎样自学Android首先要有恒心和毅力不管学什么东西都是一样的,不坚持下去就没有办法成事。万事开头难,如果下定了决心,那就不要再犹豫。其次要有正确的学习方向【没有基础的朋友】可以先试着学一下Python,这是一门简洁高效、对新手友好的编程语言。先培养一下编程的思维。然后可以了解一下C语言,J原创 2021-08-30 18:30:04 · 401 阅读 · 0 评论