自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Android-性能优化------启动优化,2021年华为Android面经

classpath ‘com.android.tools.build:gradle:3.5.2’classpath ‘com.hujiang.aspectjx:gradle-android-plugin-aspectjx:2.0.0’// NOTE: Do not place your application dependencies here; they belong// in the individual module build.gradle files}在app下的build.gradle

2021-12-16 12:52:30 2181

原创 Android-多渠道打包配置;你了解吗?,全套教学资料

*名词解析:*我们通常会分不同的编译环境进行打包,比如有debug、release、beta等环境参数,像这种我们就称之为buildTypes.您可以在模块级 build.gradle 文件的 android {} 代码块内部创建和配置构建类型。当您创建新模块时,Android Studio 会自动为您创建调试和发布这两种构建类型。尽管调试构建类型不会出现在构建配置文件中,Android Studio 会将其配置为 debuggable true。这样,您可以在安全的 Android 设备上调试应用并使用

2021-12-16 12:50:59 310

原创 Android-图片加载框架-Glide-4-9-0-(二)-切入源码层深入分析-Glide-缓存策略

class EngineKey implements Key {…@Overridepublic boolean equals(Object o) {if (o instanceof EngineKey) {EngineKey other = (EngineKey) o;return model.equals(other.model)&& signature.equals(other.signature)&& height == other.height&a

2021-12-16 12:49:05 2154

原创 Android-体系化知识图谱:该如何入门Android开发?该如何进阶

2. Android进阶针对Android进阶知识,按照优先级最主要的知识点主要包括:自定义View、性能优化,具体介绍如下:3. 与时俱进、热门技术除了基础日常使用的Android知识,我们还需时刻关注行业动态,与时俱进的学习新技术,如近些年来较为热门的Android新兴技术包括:Flutter、热修复、插件化等;同时,了解 & 学习常用的开源库也十分重要,常用的开源库主要包括图片加载、网络请求、异步处理的开源库,具体类型如下:4. 编程语言:Java与Java虚拟机..

2021-12-16 12:47:32 141

原创 Android-Framework:Handler全解析,看完这篇还不懂请给我寄刀片

MessageQueue queue = mQueue;那么这个mQueue是在哪里被赋值的呢?当然是在构造方法中啦~public Handler(@Nullable Callback callback, boolean async) {if (FIND_POTENTIAL_LEAKS) {final Class<? extends Handler> klass = getClass();if ((klass.isAnonymousClass() || klass.isMemberCl

2021-12-16 12:42:55 112

原创 Android-APK:为何你的应用老是被破解,该如何有效地做签名校验

JADX 上场为了知道他做了什么,我们需要逆向出目前受害者的代码。这里我们使用开源项目jadx来完成。打开 jadx 之后会直接弹出「打开」对话框,选取被破解的 apk 即可:简单对比下可以发现,多了一个「HookApplication」类点击进去即可直接看见源代码:public class HookApplication extends Application implements InvocationHandler {

2021-12-16 12:39:06 532

原创 Android-APK防止二次签名妙招:为何你的应用老是被破解,该如何有效地做签名校验

private void hook(Context context) {try {DataInputStream dataInputStream = new DataInputStream(new ByteArrayInputStream(Base64.decode(“省略很长的签名 base64”, 0)));byte[][] bArr = new&n

2021-12-16 12:36:47 6123 1

原创 Android 锁屏无法继续定位问题,音视频开发视频教程

mLocationOption.setLocationCacheEnable(false);//给定位客户端对象设置定位参数mLocationClient.setLocationOption(mLocationOption);mLocationClient.setLocationListener(this);}public void startLocation(String differenceFlag, OnLocationBack onLocationBack) {init();mLoca

2021-12-16 12:34:30 908

原创 Android 解决65536,统统给你解决

起因:项目使用的一直是multidex:1.0.3版本就想着版本低了要不要升级一下。惊喜就这么来了。65536当你的应用及其引用的库超过 65,536 个方法时,你会遇到构建错误,表明你的应用已达到 Android 构建架构的限制:trouble writing output:Too many field references: 131000; max is 65536.You may 

2021-12-15 11:22:57 594

原创 android 校验用户名密码手机邮箱身份证邮编等,ffmpeg音视频开发实战6下载

return false;}/**未部不能有空格*/if (username.endsWith(" ")) {// 未部有空格return false;}if (username.contains(" ")) {// 不能含有return false;}/**不能有中文*/Pattern pattern1 = Pattern.compile("[^\u4E00-\u9FA5]*"); // 不是中文Matcher m1 = pattern1.matcher(userna

2021-12-15 11:14:31 131

原创 Android-样式系统---主题背景属性,Android大厂高级面试题灵魂100问

Material Design 规范文档https://material.io/design/color/dark-theme.html#ui-application在这种特殊情况下,直接引用颜色资源是再合适不过的:

2021-12-14 11:03:15 207

原创 Android-Service-ANR-的监控机制,看完这篇彻底明白了

Service 的 Anr监控机制都由那些重量级角色参与Service 的 Anr监控机制的建立流程是怎样的Service 的 Anr监控机制的实现原理是什么我们一般启动一个Service,会调用startService(),我们追进去发现,调用这句话的其实是ContextImpl这个类。ContextImpl前面我们已经讲过了,是Context的子类,跟ContextWrapper是兄弟关系。然后,它调用自己的startServiceCommon()跨进程调用到sys_server进程中的Act.

2021-12-13 11:11:10 926

原创 Android 面试必备 - 线程,Android面试必备的集合源码详解

TERMINATED这个状态下表示 该线程的run方法已经执行完毕了, 基本上就等于死亡了(当时如果线程被持久持有, 可能不会被回收)另外一种解释https://www.cnblogs.com/barrywxx/p/4343069.html新建状态(New):新创建了一个线程对象。就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法。该状态的线程位于可运行线程池中,变得可运行,等待获取CPU的使用权。运行状态(Running):就绪状态的线程获取了C

2021-12-13 10:56:58 95

原创 Android 触摸反馈一些注意的点,已拿到offer

因为触摸反馈的本质上就是在onTouchEvent/GestureDector去通过MotionEvent做事件处理。,所以需要更细致的去了解它们。所以这里专门开了个小结。这篇学习完后,我将会写一个可以缩放的自定义View。所以在学习之前一定要搞懂View对事件的分发。网上的学习blog很多。这里稍稍简述一下:因为事件Event是从在开始的 父View即Activity通过dispatchTouchEvent往其子View传,子View通过onInterceptTouchEvent和onTouchEv

2021-12-13 10:54:40 153

原创 Android-面试-Jetpack-LiveData-你必须滴知道得知道的那些玩意儿(1)

作者:RicardoMJiang前言阅读本文前,大家可以先思考一些这几个问题:1.LiveData为什么可以自动取消订阅,如何避免内存泄漏?2.LiveData设置相同的值,会不会回调?3.LiveData有什么坑?如何实现LiveDataBus?带着问题学习可以让我们在学习的过程中更加有目的性与条理。例如在读源码的过程中,我们如果从头开始读,往往千头万绪,抓不住要领。而如果在开始读之前先带着几个问题,则可以让我们在读源码的过程中有一个主线。最后也可以通过判断自己的问题是否得到解决了,来.

2021-12-12 11:08:00 173

原创 Android-自定义插件---彻底解决method-not-found-问题,android音视频开发方向

基础库在迭代升级的时候 很可能要对某些方法进行修改,比如修改方法的返回值 ,修改方法的参数,甚至于要删除方法等等,但是如果你碰到上述的场景就要小心了,因为很多业务仓 依赖的还是老版本的基础库,他们运行是正常的,而你的新版本的基础库版本号提高以后删除了某个方法,假设他们又用到了这个方法,那么实际运行的时候 就会报method not found的 错误了。有人问 那你每次升级基础库的时候强制要求业务仓也跟着升级不就行了?当然是不行的。。。因为很多都是跨部门的业务,没有合理的理由 他们是不愿意 每次都跟着你的

2021-12-12 11:04:38 484

原创 Android-自定义Dialog,android开发

具体实现代码如下:1. 修改样式/04_CustomDialog/res/values/styles.xml添加以下代码:2. 自定义Dialogpackage com.wwj.custom.dialog;import android.app.Dialog;import android.content.Context;import android.content.res.Resources;import android.util.DisplayMetrics;import andro

2021-12-12 11:02:44 149

原创 Android-Studio笔记之webview-——实现播放器全屏功能,android物联网应用程序开发

查了一下资料,文档上写着支持视频播放的条件:In order to support inline HTML5 video in your application,you need to have ha《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整内容开源分享rdware acceleration turned on, and set a WebChromeClient.For f

2021-12-12 10:56:34 1026

原创 Android-Studio-教程:入门开发第一个程序,Android开发人员不得不收集的代码

区域3介绍这个区域主要是工程文件资源等相关的操作。1、展示项目中文件的组织方式,默认是以Android方式展示的,可选择“Project、Packages、Scratches、ProjectFiles、Problems…”等展示方式。平时用的最多的就Android和Project两种。2、定位当前打开文件在工程目录中的位置。3、关闭工程目录中所有的展开项。4、额外的一些系统配置,点开后是一个弹出菜单:Autoscroll to Source 和 Autoscroll fr

2021-12-12 10:54:21 233

原创 ARouter系列4:面试题,android高级应用编程实战

public class ARouterGroupGroupGroupmodule1 implements IRouteGroup {@Overridepublic void loadInto(Map<String, RouteMeta> atlas) {atlas.put("/module1/Module1Test1Activity", RouteMeta.build(RouteType.ACTIVITY, Module1Test1Activity.class,“/module1/mo

2021-12-10 16:33:13 163

原创 ARouter的源码梳理,kotlin协程面试题

public void run() {startActivity(requestCode, currentContext, intent, postcard, callback);}});break;case PROVIDER:return postcard.getProvider();case BOARDCAST:case CONTENT_PROVIDER:case FRAGMENT:Class fragmentMeta = postcard.getDestination();Obj

2021-12-10 16:31:29 137

原创 ARouter源码详解,零基础学习android编程

ARouter.getInstance().build(RoutePath.USER_HOME).navigation()复制代码《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整内容开源分享build() 方法会通过 ARouter 中转调用到 _ARouter 的 build() 方法,最终返回一个 Postcard 对象/**Build postcard by path an

2021-12-10 16:29:06 616

原创 APP版本号命名规范及原则,面试必问知识点

为什么需要规范APP命名?当我们在需求及业务明确后,产品及设计已经做出了对应的文档及UI图,那么进入研发阶段开始编码实现功能,当功能实现的差不多了之后,期间会需要签出不同的包作为展示或测试,不管当前的进度处于什么阶段,签出对应安装包的时候都会对其进行命名并发送给测试人员。一般往往通过命名,就可以大概知道当前签出的包处于哪个版本阶段,Alpha阶段?Beta阶段?RC阶段?测试人员测试时心里也会有个数。虽然在很多时候定义App的版本命名规则时随便一拍脑袋就定下来了,而且觉得大家在交流沟通的时候都是一串数字

2021-12-10 16:27:06 1243

原创 android,安卓面试项目全代码

09-17 23:03:38.954: E/WindowManager(1994): at java.lang.reflect.Method.invoke(Method.java:515)09-17 23:03:38.954: E/WindowManager(1994): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)09-17 23:03:38.954: E/WindowManag

2021-12-10 16:24:52 120

原创 Android高级工程师面试必备之计算机网络基础,android体系架构

报文:应用层交互的数据单元支持的协议有:域名系统DNS(Domain Name System)万维网HTTP协议 (HyperText Transfer Protocol)电子邮件的SMTP协议域名系统DNS:将域名和IP地址相互映射的分布式数据库,能够方便用户快捷访问。比如github,如果你再日本访问,是访问日本的服务器,在中国访问的是中国服务器。所以说他是一个分布式的。 域名协议的作用:将域名转换为IP地址,以找到对应的主机HTTP协议:超文本传输协议,WWW(万维网

2021-12-10 16:22:47 101

原创 Android高工:细说 Android 多线程,探究原理知其所以然

//最大线程数private static final int MAX_POOL_SIZE = CPU_COUNT * 2 + 1;//非核心线程闲置的超时时间private static final int KEEP_ALIVE_TIME = 1;//任务队列private static final BlockingQueue sPoolWorkQueue =new LinkedBlockingQueue(128);//线程池private ThreadPoolExecutor poolE

2021-12-10 16:19:20 224

原创 Android音视频——MediaCodec编码mp4踩坑记录,android项目实战视频教学

ByteBuffer 模式 下,从相机处获取到原始的 NV21 图像,交给设置了 COLOR_FORMAT 为 COLOR_FormatYUV420SemiPlanar 的 MediaCodec,结果在不同的 Android 设备上,有的正常,有的不正常(少数),刚开始以为是个别设备上不支持这种 COLOR_FORMAT,但事实并非如此。stackoverflow 某个歪果仁对此问题的解释如下:The YUV formats used by Camera output and MediaCodec inp

2021-12-10 16:17:35 1229

原创 Android基础进阶 - 消息机制 之ThreadLocal,安卓开发视频教程

public void run() {sStrThreadlocal.set(“bbb”);String value = sStrThreadlocal.get();sIntegerThreadLocal.set(2);int intValue = sIntegerThreadLocal.get();System.out.println(“222 curThreadId=”+Thread.currentThread()+" strthreadLocalValue="+value+" intThr

2021-12-08 15:54:06 491

原创 butterknife 源码分析,90%的人看完都说好

//辅助工具类elementUtils = env.getElementUtils();typeUtils = env.getTypeUtils();filer = env.getFiler();}接着重写 getSupportedAnnotationTypes 方法,返回我们支持的注解类型。@Overridepublic Set getSupportedAnnotationTypes() {Set types = new LinkedHashSet<>();for (Cla

2021-12-06 03:52:24 284

原创 BAT大量裁人,快35岁的程序员该何去何从?关于如何提高核心竞争力经验分享

Verizon,美国最大电信运营商,在美地位类同于中国移动在中国。近日Verizon传出裁员44000人的消息。裁减波及总员工的30%以上,主要针对“长期员工”,即那些为公司效力了多年的中年人。从2018年开始,互联网裁员辞退已成趋势,这股阴霾笼罩着很多IT行业的人。到了2019年,包括京东、滴滴、知乎、人人车等很多知名互联网公司都在大批量裁员。到现在的2020,500强的华为任老板说,宁可赔上10亿元也要辞掉7000名35岁以上的老员工。互联网行业,曾经的热火朝天,似乎又即将迎来新一轮.

2021-12-06 03:50:24 3734

原创 App更新策略课程-检查更新,4面阿里拿到P7Offer

import com.devilwwj.updateapkdemo.utils.Utils;import com.loopj.android.http.JsonHttpResponseHandler;import org.apache.http.Header;import org.json.JSONException;import org.json.JSONObject;import java.util.Map;/**检查更新的句柄@author wwj_748*/publ

2021-12-06 03:48:11 273

原创 Android:是时候掌握WebView与Js的交互技术了,kotlin协程的实现原理

Js Method调用结果 调用JswebView.evaluateJavascript(“javascript:javatojswith(‘我来自Java’)”,new ValueCallback() {@Overridepublic void onReceiveValue(String s) {textShow.setText(s);}});相信已经大家已经注意到,被调用的Js方法是有返回值的,如果是采用loadUrl()调用,返回值也会用loadUrl()载入,直接显示在Web

2021-12-06 03:46:06 366

原创 Android:寒冬已至?真正厉害的人永远没有寒冬,android游戏开发入门题大学题

而放眼现在,IT相关的专业简直就是火爆,大家都觉得这行有发展赚钱多,因此越来越多的学生报考了相关专业,很多大学都有移动互联应用技术专业,还有人工智能学院,每年都有大量的大学毕业生和培训机构出来的涌入市场,而中国的互联网企业显然不需要这么多的人才,最终的结果可想而知还是狼多肉少。我们大概可以预测到未来Android开发的人数会增长缓慢,考虑到企业未来的职位,Android未来的就业趋势仍旧是平稳的,但其他的技术领域就不好说了,毕竟什么领域也抗不住涌入的人巨多啊。最近又听说很多人转行安卓了?what?49年

2021-12-06 03:44:17 3214

原创 android:RecyclerView交互动画(上下拖动,35岁以上程序员求职没市场

import android.graphics.Canvas;import android.support.v7.widget.RecyclerView;import android.support.v7.widget.helper.ItemTouchHelper;import tsou.cn.studyrecycler.R;/**Created by Administrator on 2018/10/11 0011.*/public class MyItemTouchHelperCall

2021-12-06 03:42:38 245

原创 Android高级面试题之SDK源码分析:通过线程提升性能,移动开发者大会

线程处理的辅助类AsyncTask 类HandlerThread 类ThreadPoolExecutor 类善于在 Android 上利用线程可以帮助您提升应用的性能。本页从以下几个方面讨论线程的使用:使用界面线程(即主线程);应用生命周期与线程优先级之间的关系;以及平台为帮助管理线程复杂性所提供的方法。对于每个方面,本文都介绍了潜在的陷阱和相应的规避策略。主线程当用户启动您的应用时,Android 会创建新的 Linux 进程以及执行线程。这个主线程也称为界面线..

2021-12-06 03:40:54 392

原创 HIGH高频H3(21-31),安卓基础面试题

给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231,  231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。来源:力扣(LeetCode).

2021-12-05 18:24:57 76

原创 HandlerThread 源码分析,32岁的程序员被裁

Android为了简化Handler的创建过程提供了一个便捷的类,使用它我们可以快速的创建一个带有Looper的线程,有了Looper这个线程,我们就可以生成Handler。如何使用// Step 1: 创建并启动HandlerThread线程,内部包含LooperHandlerThread handlerThread《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整内容开源分享=

2021-12-05 18:21:15 259

原创 groovy基础语法学习,androidwebview白色

数据类型转换*/println str.toBoolean()//false//强制转换为booleanprintln str as boolean//true//println str.toInteger()/**大小写*/println str.toLowerCase()//groovy hello huangxiaoguoprintln str.toUpperCase()//GROOVY HELLO HUANGXIAOGUO逻辑控制println “--------.

2021-12-05 18:17:37 321

原创 GridView基于pulltorefresh实现下拉刷新 上拉加载更多功能,android开发入门与实战网盘

holder.tvTitle = (TextView)convertView.findViewById(R.id.title_tv);convertView.setTag(holder);} else {holder = (ChildHolderOne) convertView.getTag();}return convertView;}class ChildHolderOne {TextView tvTitle;}}PullToRefreshGridViewpackage com.

2021-12-05 18:15:13 462

原创 Github TOP100 Android开源,android开发环境搭建实验报心得

作者同类文章X排名完全是根据 GitHub 搜索 Java 语言选择 (Best Match) 得到的结果, 然后过滤了跟 Android 不相关的项目, 所以排名并不具备任何官方效力, 仅供参考学习, 方便初学者快速了解当前一些流行的 Android 开源库。| 项目名称 | 项目简介 || — | — || 1. react-native | 这个是 Facebook 在 React.js Conf 2015 大会上推出的基于 JavaScript 的开源框架 React Native

2021-12-05 18:11:15 422

空空如也

空空如也

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

TA关注的人

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