自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(87)
  • 收藏
  • 关注

原创 2020非科班生的Android秋招,金九银十求职经历 (快手,flutter安装包大小

代码题1.手写二分查找二面(一小时)Android问题:1.事件分发详细的讲(三个核心函数以及整体过程),详细的讲下dispatchTouchEvent,子View如何阻止父View拦截事件,Action_Cancel什么时候会发生,一个应用场景:两个并排Button,点击button之后,又移动到另一个button,但不点击滑动到外面会经过发生哪些事件。2.OkHttpMessage.obtain()有什么好处,为什么不使用new Message(防止多次Gc)4.LinearLayou

2022-01-07 10:16:46 1387

原创 Android R WindowManagerService模块(5) 焦点窗口和InputWindows的更新

当topFocusedDisplayId为INVALID_DISPLAY时,认为当前焦点display没有焦点窗口,需要寻找重新确认,所以又继续执行findFocusedWindow()方法寻找:// frameworks/base/services/core/java/com/android/server/wm/DisplayContent.javaWindowState findFocusedWindow() {mTmpWindow = null;// 遍历WindowStateforAllW

2022-01-05 12:17:16 1800

原创 Android MediaCodec硬编码H264文件(四),fluttertextfield边框颜色

// 从输出缓冲区队列中拿到编解码后的内容,进行相应操作后释放,供下一次使用int outputBufferId = codec.dequeueOutputBuffer(…);if (outputBufferId >= 0) {ByteBuffer outputBuffer = codec.getOutputBuffer(outputBufferId);MediaFormat bufferFormat = codec.getOutputFormat(outputBufferId); // op

2022-01-05 12:14:26 376

原创 Android HTTP通信基础,android开发流程框架

Cache-Control:用于指定缓存指令,缓存指令是单向的(响应中出现的缓存指令在请求中未必会出现),且是独立的(一个消息的缓存指令不会影响另一个消息处理的缓存机制),HTTP1.0使用的类似的报头域为Pragma。请求时的缓存指令包括:no-cache(用于指示请求或响应消息不能缓存)、no-store、max-age、max-stale、min-fresh、only-if-cached;响应时的缓存指令包括:public、private、no-cache、no-store、no-transfor

2022-01-05 12:13:01 173

原创 Android Handler源码浅析,面试阿里的时候一定会问到的

这应该是大家平时写到吐的代码了吧,主要是从子线程发送一条消息到主线程的过程。消息进队列 (源码解析)创建一个message并赋值obj参数,然后携带message调用了sendMessage方法new Thread(() -> {Message message = Message.obtain();message.obj = “好好学习”;mHandler.sendMessage(message);}).start();**Handler#sendMessage**send

2022-01-05 12:11:36 70

原创 Android Gradle 详解,kotlin枚举类型判断

二、project/build.gradle(project)从上面来说整个项目有两个build.gradle文件,咱们先重点查看project中的build.gradle即//顶级生成文件,您可以在其中添加所有子项目/模块通用的配置选项。buildscript {//构建过程依赖的仓库repositories {google()//代码托管仓库mavenCentral()}dependencies {//Gradle 插件及使用版本classpath “com.android.t.

2022-01-05 12:10:11 1758

原创 Android Framework学习笔记(十一)WindowManager体系,android程序开发教程

Activity在启动过程中,会调用ActivityThread的handleLaunchActivity()方法,具体可以参考Framework学习(五)应用程序启动过程这篇文章。frameworks/base/core/java/android/app/ActivityThread.javaActivityThread#handleLaunchActivity()private void handleLaunchActivity(ActivityClientRecord r, Intent cus

2022-01-05 12:08:47 316

原创 Android BLE 蓝牙通信库,flutter登录并保持会话

public class Beacon {public byte[] mBytes;public List mItems;}BeaconItem 是按 type 来区分的,public class BeaconItem {/**广播中声明的长度*/public int len;/**广播中声明的 type*/public int type;/**广播中的数据部分*/public byte[] bytes;}然后根据自定义的协议,解析对应的 BeaconIte

2022-01-05 12:07:21 317

原创 Android AIDL:跨进程调用Service (AIDL Service),聊聊Android开发的现状和思考

generating a proxy if needed.*/public static com.zhuanghongji.startservicefromanotherapp.IAppServiceRemoteBinder asInterface(android.os.IBinder obj) {if ((obj == null)) {return null;}android.os.IInterface iin = obj.queryLocalInterface(DESCRIPTOR);.

2022-01-05 12:05:57 119

原创 Android上基于JSON的数据交互应用,程序员经验分享

org.json.JSONObject     Array,一组有序的数据列表。org.json.JSONArrayAndroid中 JSON相关的类(4个)和Exceptions(1个):=====================================l  JSONArrayl  JSONObjectl  JSONStringerl  JSONT

2022-01-03 11:57:16 126

原创 AndroidStudio的必备插件和使用技巧,移动应用开发专业前景分析

文件右键 > Git > Show History访问剪切板选择粘贴使用 Ctrl-Shift-V 快捷键可以将最近使用的剪贴板内容选择插入到文本。使用时系统会弹出一个含有剪贴内容的对话框,从中你可以选择你要粘贴的部分。生成代码写代码时用 Alt-Insert ( Code|Generate… )可以创建类里面任何字段的 getter 与 setter 方法。快捷键右键点击断点标记(在文本的左边栏里)激活速查菜单,你可以快速设置 enable/disable 断点或者条件它

2022-01-03 11:51:36 167

原创 Flutter学习(2)Dart语言浅学,android动画原理

bool isNoble(int atomicNumber) {return _nobleGases[atomicNumber] != null;}注:如果函数没有显示声明返回值类型时,默认当做 dynamic处理,函数返回值没有类型推断2. 对于只包含一个表达式的函数,可以使用简写语法bool isNoble(int atomicNumber) => _nobleGases[atomicNumber] != null;3. 函数作为变量var say = (str) {print(s

2021-12-30 14:00:44 87

原创 Flutter学习(1)初识Flutter,阿里巴巴android开发手册

Flutter是Google发布的一个用于创建跨平台、高性能移动应用的框架。现在移动平台下的App,分为原生开发和混生开发,他们是这样定义的:1. 原生开发一个平台,有其支持的一整套框架。比如Android平台,它有自己的语言Java、Kotlin,有自己的一整API—Android SDK。通过这一套框架,就能够实现一个应用开发。比如IOS平台,它有OC、Swift,通过IOS SDK来实现一个应用。原生开发的优势有:可以访问全平台功能(摄像头、GPS等)速度快、性能高,用户体验好

2021-12-30 13:59:49 526

原创 Flutter 移动端架构实践:Widget-Async-Bloc-Service,差点挂在第四面

在Flutter现有的状态管理技术中,该模式在很大程度上依赖于 BLoCs ,并且非常类似于 RxVMS 架构。闲言少叙,接下来我很荣幸地介绍:Widget-Async-BLoC-Service 模式简称:WABS (这很酷,会因为它包含我的缩写 ?)。这种架构模式有四种变体:1. Widget-Bloc-Service2. Widget-Service3. Widget-Bloc4. Widget only请注意:除了Widget项外,BLoC和S

2021-12-30 13:55:13 199

原创 Flutter 可以缩放拖拽的图片,apk优化工具

inPageView: false);},)GestureConfig 参数说明参数描述默认值minScale缩放最小值0.8animationMinScale缩放动画最小值,当缩放结束时回到minScale值minScale * 0.8maxScale缩放最大值5.0animationMaxScale缩放动画最大值,当缩放结束时回到maxScale值maxScale * 1.2speed缩放拖拽速度,与用户操作成正比1.0in

2021-12-30 13:53:22 222

原创 Flutter 中的 JSON 解析,android软件开发步骤

然后我们在 main() 中去调用 d《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整内容开源分享ecodeCountry() 运行,报错了…Unhandled Exception: type ‘List’ is not a subtype of type ‘List’…错误日志说 List<dynamic> 不是 List<String> 的子类型,也就是

2021-12-30 13:52:27 153

原创 Android自定义露一手,轻松实现View 3D 翻转效果,2021阿里手淘Android面试题目

matrix.preTranslate(-mCenterX,-mCenterY);matrix.postTranslate(mCenterX,mCenterY);mCamera.restore();super.applyTransformation(interpolatedTime, t);}/**动画更新的回调*/public interface AnimationUpdateListener{/**进度回调*/void onProgressUpdate(float pro

2021-12-29 15:28:51 149

原创 Android自定义控件开发入门与实战(12,挑战大厂重燃激情

RectF bounds:要保存的区域所对应的举行对象int saveFlags:取值ALL_SAVE_FLAG表示保存全部内容。别的值之后再讲述。第二个构造函数其实和第一个一样,只不过它是根据4个点来构造一个矩形的。下面我们接下来以Xfermode为例,看看saveLayer()函数都做了什么。我们先使用Xfermode来做一个SRC_IN的效果:@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas)..

2021-12-29 15:27:49 127

原创 Android网络编程 --断点续传下载文件,安卓开发面试题自定义view

http://download.csdn.net/detail/wwj_748/6975041,源码已经给你们准备好了。代码中注释已经很清楚,小巫在这里就多说了。/MultiThreadDownload/src/com/wwj/download/db/DBOpenHelper.java数据库帮助类,用于创建保存下载进度的表package com.wwj.download.db;import android.content.Context;import android.database.sqlit

2021-12-29 15:26:48 105

原创 Android组件化和插件化开发,基于android的app开发论文

图中从上向下分别为应用层、组件层,功能基础层基础层: 基础层包含的是一些基础库以及对基础库的封装,比如常用的图片加载,网络请求,数据存储操作等等,它往往是一些功能性的,其他模块或者组件都可以引用同一套基础库,这样不但只需要开发一套代码,还解耦了基础功能和业务功能的耦合,在基础库变更时更加容易操作。组件层: 基础层往上是组件层,组件层就包含就是根据我们应用划分的业务组件,例如登录模块,消息模块等。应用层: 工程根据需要加入自己的业务组件。组件化开发带来的优点:业务模块分开,解耦.

2021-12-29 15:25:38 288

原创 android系统如何获取imei号码,获取手机型号和系统版本号

2.tm.CALL_STATE_RINGING=1 响铃3.tm.CALL_STATE_OFFHOOK=2 摘机*/tm.getCallState();//int/*电话方位:*/tm.getCellLocation();//CellLocation/*唯一的设备ID:GSM手机的 IMEI 和 CDMA手机的 MEID.Return null if device ID is not available.*/tm.getDeviceId()..

2021-12-29 15:23:03 1081

原创 Android简单笔记本解析,2021年最新Android大厂面试题来袭

intent.setData(NotePad.Notes.CONTENT_URI);}SearchView searchview =(SearchView)findViewById(R.id.search_view);//为查询文本框注册监听器searchview.setOnQueryTextListener(NoteSearch.this);}@Overridepublic boolean onQueryTextSubmit(String query) {return false;}

2021-12-29 15:20:44 110

原创 Android面经:面试前,这样准备提高专业技能,看看这篇文章吧

重要的工具类 & 源码实现:AsyncTask、HandlerThread、Handler、IntentService、LruCache、LinkedHashMap、SparseArray。RecyclerView:缓存原理、和ListView的对比、Adapter如何适配多种layout。存储:数据库升级 & 优化、ContentProvider,SharePreference。SDK版本升级的兼容问题。Android的权限管理机制。Android深入知..

2021-12-28 14:03:39 318

原创 Android锁屏下弹窗的尝试,android开发实战我的云音乐

首先,可以确定的一点是锁屏下弹出页面必须用Activity实现,用WindowManager和Dialog均不行,然后有个注意的地方就是某些手机默认是不允许应用在锁屏下弹出界面的,比如小米的MIUI和魅族的Flyme, 需要在设置中打开一项权限才可以:并且这个权限不能像其他权限一样可以在代码中动态申请,只能用户手动选择允许。在我的手机上这个权限默认是禁止的,即便选择询问,有时也是不能弹出询问对话框的,必须选择允许才行。目测应该目前国内几大手机厂商出品的手机都会带这个功能。因为在锁屏下可以弹出页面其实

2021-12-28 14:02:36 666

原创 Android逆向之https,android实战项目源码

超文本传输协议,是一个基于请求与响应,无状态的,应用层的协议,常基于TCP/IP协议传输数据,互联网上应用层最为广泛的一种网络协议。发展史协议发展说明HTTP/0.91991年定稿最早的HTTP协议,没有作为正式标准只有GET命令;没有请求头、请求体、返回头;服务器只能读取HTML文件以ASCII字符流返回给客户端;默认80端口HTTP/1.01996年发布,正式作为标准引入了POST、HEAD等命令、请求头、响应头、状态码;提供了缓存、多字符集支持、multi-pa

2021-12-28 13:59:08 1926

原创 Android逆向之https(1),2021年Android常见面试题

方法说明1.0、1.1中支持的协议版本GET获取资源1.0、1.1POST传输实体主体1.0、1.1PUT传输文件1.0、1.1HEAD获得报文首部1.0、1.1DELETE删除资源1.0、1.1OPTIONS删除资源1.0、1.1TRACE追踪路径1.1CONNECT将服务器作为代理,让服务器代替用户去访问1.1LINK建立和资源之间的联系1.0UNLINK断开连接关系1.0首部ht...

2021-12-28 13:57:50 618

原创 android进阶篇13、进程间通信机制Binder简述,牛逼

void addBookInOut(inout Book book);}// Book.aidlpackage com.sunnyweather.android;// Declare any non-default types here with import statementsparcelable Book;2、我们需要在客户端和服务端针对实体aidl进行实现,并且包名及类名要一致,如下所示,其实就是实现Parcelable接口,因为在进程间通信需要对象可序列化;package com.s

2021-12-28 13:56:51 683

原创 Android还有必要深耕吗?现在的前景是怎样的?,搭建android开发环境的难点

高效文件IO与网络IO微信全面调优内存与网络贴近实战之问题优化编程优化高级音视频C/C++基础交叉编译NDK进阶面试增量更新与Gif渲染H264视频编码MediaCodec视频编辑之剪影实战FFmpeg万能播放器直播推流图形渲染与识别Webrtc音视频架构师必备架构筑基技能手淘组架构设计开源架构手写实现一线大厂架构核心进阶![架构师必备](https://im《An..

2021-12-28 13:54:21 120

原创 AOP(面向切面编程)在Andorid开发中的应用,含小米、腾讯、阿里

AOP不一定都像Spring AOP那样,是在运行时生成代理对象来织入的,还可以在编译期、类加载期织入,比如AspectJ。这里列出了一些SpringAOP和AspectJ的区别,想了解更多请点击 此处AOP在Android客户端(如网易新闻客户端)中的应用AOP有哪些能够解决我们痛点的使用场景的,下面简单列举一下在Android客户端中对AOP技术的应用网易新闻热补丁技术网易新闻的Android客户端热更新技术使用的是AspectJ, AspectJ就是AOP技术的一种框架。详情网易新闻热补丁

2021-12-27 13:43:10 304

原创 ANR问题解析(一),android系统移植和驱动开发

Activity调度过程:应用进程启动或者停止Activity—>报告给《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整内容开源分享AMS,其内部维护所有应用进程启动或者停止Activity的记录—>AMS更新内部记录,并通知客户端进程操作—>客户端进程接收通知,执行操作启动Activity的各种方式:应用程序中调用startActivity()在Ho.

2021-12-27 13:42:08 114

原创 Android:实现安卓小程序-记事本(备忘录)的开发,2021BTAJ面试真题详解

public Object getItem(int i) {return null;}@Overridepublic long getItemId(int i) {return 0;}@Overridepublic int getCount() {if(data==null) return 0;return data.size();}}接着在编写NoteAdapter类继承上类,初始化view, 将Note条目的各项信息展示出来,其中还自定义了一个viewHolder类,方便对xm

2021-12-27 13:41:07 461

原创 Android高级架构师整理面试经历发现?(大厂面经,flutter小程序引擎

讲项目网龙 (android 开发)面试体验很差,面试官感觉什么都没准备看我的简历然后就看我写的专业技能就开问了,全程没表情,,,。android 切换屏生命周期的改变知道有几种排序?说说堆排序原理?这题真的会被气死,我都把堆排序怎么实现,为什么这样可以实现排序,都推了一遍,他说了句你说的只是实现,不是原理。。。表示很无奈,难道算法是靠背的?说说你对索引的理解设计模式分哪3大块,说说行为形的其中一个讲项目面试体验实在太差,还有几题吧,也想不起来了,面完我就觉得没戏了

2021-12-27 13:38:39 111

原创 Android音视频开发(1),Android高级工程师必看系列

帧分组对于视频数据主要有两类数据冗余,一类是时间上的数据冗余,另一类是空间上的数据冗余。其中时间上的数据冗余是最大的。下面我们就先来说说视频数据时间上的冗余问题。为什么说时间上的冗余是最大的呢?假设摄像头每秒抓取30帧,这30帧的数据大部分情况下都是相关联的。也有可能不止30帧的的数据,可能几十帧,上百帧的数据都是关联特别密切的。对于这些关联特别密切的帧,其实我们只需要保存一帧的数据,其它帧都可以通过这一帧再按某种规则预测出来,所以说视频数据在时间上的冗余是最多的。为了达到相关帧通过预测的方法来压缩

2021-12-27 13:37:22 266

原创 Android面试题避坑:ViewPager中的Framgent如何实现懒加载?

}}FragmentPagerAdapter 在创建 Fragment后,根据 behavior 调用了setMaxLifecycle。//FragmentPagerAdapter.javapublic FragmentPagerAdapter(@NonNull FragmentManager fm,@Behavior int behavior) {mFragmentManager = fm;mBehavior = behavior;}@Overridepublic Object ins

2021-12-27 13:36:23 456

原创 Android面试翻车实录:5年开发,惨败在简历上没写组件化

对于如何去衡量一个开发者的水平到底有多高,一般我们会看他会什么,能干什么。如果是一个刚入行的新手,水平大概是初级开发者,那么公司对他的要求就不会太高。但是在咱们Android行业有太多伪装的新手,3-5年工作经验的“新手”。那么新手一般如何开发的呢, 项目架构毫无章法,代码毫无设计模式,性能体验毫无快感。所以我们会发现 水平的高与低,完全可以用代码的好与坏来衡量。 那么对于开发者来说,写好代码的第一步就是选择好的架构设计。都说程序员工资高、待遇好, 2021 金三银四就

2021-12-27 13:35:03 201

原创 android面试之今日头条-字节跳动-android社招面试(附答案)

RecyclerView相对ListView区别?i. 布局效果上ii. 缓存机制上Bitmap resize相关,设置option,decode项目相关用MultiDex解决何事?其根本原因在于?Dex如何优化?主Dex放哪些东西?主Dex和其他Dex调用、关联?Odex优化点在于什么?答案:MultiDex解决方法数65535的限制问题,即方法数不能超过65535个;方法i《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义.

2021-12-27 13:33:53 238

原创 Android面试主题整理合集(三),移动端混合开发技术

Response response = interceptor.intercept(next);return response;}}拦截器public class BridgeInterceptor implements Interceptor{@Overridepublic Response intercept(Chain chain) throws IOException {Log.e(“TAG”,“BridgeInterceptor”);Request request = chain

2021-12-27 13:32:47 125

原创 FlutterDojo设计之道—状态管理之路(七,Android学习笔记在互联网上火了

var api = API();其它的UI代码,大家可以参考Dojo的源码,如下所示。flutter_dojo/category/backend/providerstate4widget.dart使用Setstate首先来看下最基本的方式。通过setState来更新数据,其原理就是在Future完成之后,使用setState刷新UI。核心代码如下所示。获取数据。data.getData(pageIndex).then((value) {setState(() => data.dataLi

2021-12-26 15:30:08 69

原创 Flutter 扩展NestedScrollView (二)列表滚动同步解决

这个问题问了很多人。。也查找了好久都没找到好的方式去获取当前 激活的 列表对应的 ScrollPosition。。终于我只能想到一个 workaround。暂时解决这个问题。提供一个容器,把inner里面的滚动列表包裹起来,并且设置它的tab 的唯一key//pack your inner scrollables which are in NestedScrollView body//so that it can find the active scrollable//compare with N

2021-12-26 15:27:18 992

原创 FFmpeg-之X264视频编码与FAAC音频编码(四),flutter中文本框的长度

enc = x264_encoder_open(&params);获取整个流的pps和SPS:int s = x264_encoder_headers(enc, &nals, &nal_count);x264编码:初始化图片信息:x264_picture_t picin, picout;x264_picture_init(&picin);对图片信息参数设定:picin.i_pts = ts;picin.i_type

2021-12-26 15:25:53 162

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除