自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Android自动化构建之Ant多渠道打包实践(上),【性能优化实战

Window7Antjdkandroid sdkmac系统下所需要的运行环境也是类似的,我们都需要配置Ant、jdk、sdk的环境变量,我们可以看一下window下是环境变量配了些什么:ANT_HOME : D:\android\apache-ant-1.9.4JAVA_HOME : C:\Program Files\Java\jdk1.6.0_45ANDROID_SDK_HOME : D:\android\adt-bundle-windows-x86_64-2014032..

2021-12-24 14:57:28 221

原创 Android组件化和插件化开发简单介绍,Android开发需要学什么

!为什么要项目组件化为什么要项目组件化随着APP版本不断的迭代,新功能的不断增加,业务也会变的越来越复杂,APP业务模块的数量有可能还会继续增加,而且每个模块的代码也变的越来越多,这样发展下去单一工程下的APP架构势必会影响开发效率,增加项目的维护成本,每个工程师都要熟悉如此之多的代码,将很难进行多人协作开发,而且Android项目在编译代码的时候电脑会非常卡,又因为单一工程下代码耦合严重,每修改一处代码后都要重新编译打包测试,导致非常耗时,最重要的是这样的代码想要做单元测试根本无从下手,所以必须要

2021-12-24 14:53:57 261

原创 Java虚拟机相关面试题,2021届毕业生还没找到Android开发工作

1.1、简述一下Java虚拟机模型(JVM)。JVM:Java Virtual Machine,Java虚拟机。我们知道,Java是一个跨平台的语言,其中起主要作用的就是JVM,通俗地讲,JVM可以理解为一个翻译,把class文件翻译成机器码(010101),然后给Linux、Windows等操作系统使用。JVM主要包括三个部分:类加载过程、运行时数据区和执行引擎。class文件经过类加载过程被读入内存(运行时数据区),然后再交给执行引擎被翻译成机器码。我们主要讲一个运行时数据区,从两个维度来讲

2021-12-23 14:43:57 169

原创 java并发编程中常用的工具类 Executor,Android开发避坑指南

| 使用 Executor 的软件包 || :-- || java.util.concurrent | 在并发编程中很常用的工具类。  || java.util.concurrent 中 Executor 的使用 || :-- || java.util.concurrent 中 Executor 的子接口 || :-- ||  interface | **ExecutorService**Ex

2021-12-23 14:42:46 179

原创 java常用正则表达式,sharedpreference使用

匹配由26个英文字母组成的字符串 1+$*/public static final String STR_ENG="2+$";/**过滤特殊字符串正则regEx="[`!@#$%^&*()+=|{}’:;’,\[\].<>/?!@#¥%……&*()——+|{}【】‘;:”“’。,、?]";*/public static final String STR_SPECIAL="[`!@#$%^&*()+=|{}’:;’,\[\].<>.

2021-12-23 14:41:51 106

原创 JAVA字符串格式化-String,2021大厂Android社招面试题

测试用例public static void main(String[] args) {String str=null;//$使用str=String.format(“格式参数的使用:的使用:%1的使用:d,%2$s”, 99,“abc”);System.out.println(str);//+使用System.out.printf(“显示正负数的符号:%+d与%d%n”, 99,-99);//补O使用System.out.printf(“最牛的编号是:%03d%n”, 7);//空格使

2021-12-23 14:40:56 1526

原创 Java中的反射基础知识,Android面试心得必备技能储备详解

e.printStackTrace();}}通过上述代码,我们就可以在运行时通过完整的类名来构建对象。获取构造函数接口// 获取一个公有的构造函数,参数为可变参数,如果构造函数有参数,那么需要将参数的类型传递给 getConstructor 方法public Constructor getConstructor (Class…<?> parameterTypes)// 获取目标类所有的公有构造函数public Constructor[]<?> getConstruct

2021-12-23 14:39:49 128

原创 java1,移动终端开发期末考试题

这段代码要比上面清晰许多,并且避免了强制类型转换。**3.自动装包/拆包(Autoboxing/unboxing)**自动装包/拆包大大方便了基本类型数据和它们包装类地使用。自动装包:基本类型自动转为包装类.(int >> Integer)自动拆包:包装类自动转为基本类型.(Integer >> int)在JDK1.5之前,我们总是对集合不能存放基本类型而耿耿于怀,现在自动转换机制解决了我们的问题。int a = 3;Collection c = new ArrayLi

2021-12-23 14:38:52 339

原创 Java 笔试:常见题目总结,android混合开发lua

}}执行结果是:2分析:try中的return语句调用的函数先于finally中调用的函数执行,也就是说return语句先执行,finally语句后执行,所以,返回的结果是2。Return并不是让函数马上返回,而是return语句执行后,将把返回结果放置进函数栈中,此时函数并不是马上返回,它要执行finally语句后才真正开始返回。下面用一个程序来帮助分析:public class Test {public static void main(String[] args) {Syst

2021-12-23 14:37:41 121

原创 Java 四种线程池,整理几个重要的Android知识

volatile int runState;static final int RUNNING = 0;static final int SHUTDOWN = 1;static final int STOP = 2;static final int TERMINATED = 3;线程池的关闭:shutdown():不会立即终止线程池,而是要等所有任务缓存队列中的任务都执行完后才终止,但再也不会接受新的任务shutdownNow():立即终止线程池,并尝试打断正在执行的任务,

2021-12-23 14:36:18 83

原创 Java 反射机制详解,retrofit框架

}private String getMobile(String number) {String mobile = “010-110” + “-” + number;return mobile;}private void setCountry(String country) {this.country=country;}public void getGenericHelper(HashMap<String, Integer> hashMap) {}public Class g

2021-12-23 14:34:55 191

原创 IT-架构师绝对不能错过的-34-技术知识图谱帮你轻松拿下大厂offer

##1.6 安全秘籍##1.7 阿里巴巴常用小框架##1.8 架构方法论图谱##1.9 设计模式秘籍图谱2##2.1 JVM虚拟机垃圾回收图谱##2.2 Java并发图谱##2.3 Java集合图谱##2.4 Java集合类图##2.5 Java List类图##2.6 Java Map类图##2.7 Java Set类图##2.8 Java TCP IP3##3.1 Hadoop技能图谱![image](https://upload-images.j.

2021-12-23 14:33:30 1708

原创 android:RecyclerView交互动画(上下拖动,移动端app开发

}//在拖拽的过程中不断地调用adapter.notifyItemMoved(from,to)mMoveCallback.onItemMove(viewHolder.getAdapterPosition(), target.getAdapterPosition());return true;}//侧滑的时候回调的方法@Overridepublic void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {//监听侧滑;

2021-12-22 14:59:40 1005

原创 Android高级面试题之SDK源码分析:通过线程提升性能,androidwifi开发书籍

内部原理线程和界面对象引用显示引用隐式引用线程和应用Activity生命周期保留线程线程优先级线程处理的辅助类AsyncTask 类HandlerThread 类ThreadPoolExecutor 类善于在 Android 上利用线程可以帮助您提升应用的性能。本页从以下几个方面讨论线程的使用:使用界面线程(即主线程);应用生命周期与线程优先级之间的关系;以及平台为帮助管理线程复杂性所提供的方法。对于每个方面,本文都介绍了潜在的陷阱和相应..

2021-12-22 14:58:15 116

原创 Android高级工程师面试题-字节跳动面试,Android布局优化之include、merge、ViewStub的使用

6、四大组件及生命周期;ContentProvider的权限管理(读写分离,权限控制-精确到表级,URL控制);Activity的四种启动模式对比;Activity状态保存于恢复;7、什么是AIDL 以及如何使用;8、请解释下在单线程模型中Message、Handler、Message Queue、Looper之间的关系;9、Fragment生命周期;Fragment状态保存startActivityForResult是哪个类的方法,在什么情况下使用,如果在Adapter中使用应该如何解耦;10、A

2021-12-22 14:56:50 263

原创 Android高工:okhttp原理详解,搞懂了直接去虐面试官,安卓面试题及答案2020

使用StreamAllocation.newStream来和服务端建立连接,并返回输入输出流(HttpCodec),实际上是通过StreamAllocation中的findConnection寻找一个可用的Connection,然后调用Connection的connect方法,使用socket与服务端建立连接。1.2.5、CallServerInterceptor:负责从服务器读取响应的数据主要的工作就是把请求的Request写入到服务端,然后从服务端读取Response。写入请求头写

2021-12-22 14:55:24 316

原创 Android高工面:Activity创建到View呈现中间发生了什么?子线程到底能不能更新UI

}handleLaunchActivity()主要调用了两个方法:performLaunchActivity()和handleResumeActivity()performLaunchActivity:完成Activity的创建,以及调用Activity的 onCreate()和onStart()方法。handleResumeActivity:调用Activity的onResume()方法,处理View的呈现。performLaunchActivity我们进入performLaunch

2021-12-22 14:53:59 1512

原创 android高仿今日头条富文本编辑(发布文章),android开发文档中文版

(这里不会重复richeditor-android原有功能,只会详细讲解补全的细节功能)1.1、在没有焦点时,主动获取焦点并弹出软键盘修改后: 在第一打开富文本编辑时,点击加粗,下划线或上传图片时,主动获取焦点并弹出软键盘。 1.2、在光标主动回到某处,下方tab选中当前的样式,同理撤销和回退修改后: 在光标变化,撤销回退,或者主动点删除时,下方tab会根据当前样式选中要选中的样式 1.3、上传图片,自动换行,且自动滚动到底部。且充满屏幕修改后: 选中图片后,插入图片自动换行,自动滚动到底部,弹

2021-12-22 14:52:34 409

原创 Android面试官:说说你对 Binder 驱动的了解?,移动端开发技术栈

????:不行,两个进程的进程空间有不同的虚拟地址映射规则,内存是不共享的,无法直接通信。Linux 把进程空间划分为用户空间和内核空间,分别运行用户程序和系统内核。用户空间和内核空间虽也是隔离的,但可以通过 copy_from_user 将数据从用户空间拷贝到内核空间,通过 copy_to_user 将数据从内核空间拷贝到用户空间。所以 binder《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》【docs.qq.com/doc/DSkNLaERkbnFoS0

2021-12-22 14:49:43 172

原创 Android面试刨根问底之常用源码篇(二),蓝牙ble开发教程

Retrofit retrofit = new Retrofit.Builder().baseUrl(“https://api.github.com/”).addConverterFactory(GsonConverteractory.create())//.addCallAdapterFactory(RxJava2CallAdapterFactory.create()).build();//converterFactory//后续交个okhttp使用Retrofit的七步骤添加Retr

2021-12-22 14:48:18 317

原创 opencv之人脸检测项目实战(二),android艺术探索pdf

全球70亿人口,人脸相关技术应用前景不可限量!1.3 人脸检测核心架构二、人脸检测实现技术储备2.1 NDK开发的原理这是java调用c的一个过程:(首先我们得明白,java直接调用c是调不到的,我们得先把c铸成一种动态库so文件)。我们在java中调用c的动态库的方法必须经历三个步骤:1)System.loadLibrary()方法加载动态库。(如果动态库的名字为libwgr.so,那么我们应该去掉文件名的lib和.so,只把中间的wgr作为参数传递到方法中进行加载)。2)第二步,我

2021-12-20 18:49:06 151

原创 Mac电脑使用:Mac电脑一键智能清理神器CleanMyMac X,Android开发者

模块一:清理CleanMyMac X软件的第一个模块:清理模块,包含的有:系统垃圾、照片垃圾、邮件附件、iTunes垃圾、废纸篓等5个部分,清理模块也是常用的模块,只要涉及到清理电脑的磁盘存储空间,就要用到这个模块,而且使用起来非常的方便,只用点击主菜单里面“扫描”按钮,然后等待扫描结束之后,根据实际情况进行选择性的自定义清理。举个简单的实例,比如Mac电脑的Xcode编辑器,如果经常使用的话,会有很多缓存文件,而且随着时间的推移缓存会越来越多,到最后有可能会变成10个多G的都有,所以必须把这些缓存清理掉

2021-12-20 18:47:12 460

原创 ListView和Adapter数据适配器的简单介绍,kotlin编译器安卓版

自定义布局文件(listview的项的显示效果)<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android=“http://schemas.android.com/apk/res/android”android:layout_width=“match_parent”android:layout_height=“match_parent”><ImageViewandroid:id="@+id/

2021-12-20 18:45:04 405

原创 Linux编程之环境搭建与系统管理(一),android高级开发及实践课后题

【# groups ruan】8.who【命令作用】系统目前登录的用户的用户信息【命令语法】who(选项)(参数)【常用选项】-w 显示用户的信息状态栏-H 显示各栏位的标题信息列-q 只显示登入系统的帐号名称和总人数【参数说明】指定查询文件【命令示例】显示登入系统的账户和人数【# who -q】显示各栏位的标题信息列【# who -H】显示用户的信息状态栏【# who -w】9.w【命令作用】显示已经登陆系统的用户列表,并显示用户正在执行的指令【命令语法】w(选项)(参

2021-12-20 18:42:51 65

原创 Linux之fd与dup2复制fd用法,真的已经讲烂了

**<1>.dup实际上,调用dup(oldfd)等效于,fcntl(oldfd, F_DUPFD, 0)。<2>.dup2(oldfd, newfd)等效于,close(oldfd);fcntl(oldfd, F_DUPFD, newfd);请参考 fcntl() 在进程间通信时可用来改变进程的标准输入和标准输出。文件描述符的赋值是文件描述符表结构体成员中指针的复制。**通过对 open 函数的理解,可见文件描述符是一个小整数执行以下代码,看看你能发现什么:#includ

2021-12-20 18:40:36 343

原创 Kotlin系列二:面向对象编程(类与对象,看这里

class Student {var sno = “”var grade = 0}在Kotlin中任何一个非抽象类默认都是不可以被继承的,相当于Java中给类声明了final关键字。Effective Java这本书中明确提到,如果一个类不是专门为继承而设计的,那么就应该主动将它加上final声明,禁止它可以被继承。Kotlin在设计的时候遵循了这条编程规范,默认所有非抽象类都是不可以被继承的。class前面的open关键字就是在主动告诉Kotlin编译器,这个类是专门为继承而设计的,允许被继承

2021-12-20 18:35:24 189

原创 Kotlin学习(2)语法,android开发计算器用户界面

| enum | 枚举类 || data | 数据类 || sealed | 密封类 || annotation | 注解类 || 成员修饰符 | 说明 || — | — || override | 重写函数 || open | 可被重写 || final | 不能被重写 || abstract | 抽象函数 || lateinit | 后期初始化 || 访问修饰符 | 说明 || — | — || public | 对外可访问 || private | 私有,仅当类可访问 |

2021-12-20 18:33:20 153

原创 Kotlin学习手记——基本类型,Android进阶学习资料

val m = String(“Today is a sunny day.”.toCharArray())println(k === m) //比较引用println(k == m) //比较值val n = “”"<!doctype html>Hello WorldHello WorldThis is a demo page.“”".trimIndent()println(n)集合类型:只有可变的才能添加删除元素:val intList:

2021-12-20 18:31:18 119

原创 WebView遇到的坑及优化,高级UI都没弄明白凭什么拿高薪

protected void onResume() {h5_webview.onResume();h5_webview.resumeTimers();super.onResume();}Webview的onPause()方法官网是这么解释的:Does a best-effort attempt《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整内容开源分享to pause a

2021-12-19 19:13:19 700

原创 ViewPager翻页特效(1_向源码学习),kotlin高阶函数面试

if (lp.isDecor) {…}}}…for (int i = 0; i < count; i++) {final View child = getChildAt(i);if (child.getVisibility() != GONE) {final LayoutParams lp = (LayoutParams) child.getLayoutParams();ItemInfo ii;if (!lp.isDecor && (ii = infoForChi

2021-12-19 19:11:54 127

原创 tomcat的域名以及多域名配置,美团移动端开发工程师

改哦。6. 当我们的服务器自己维护(没有放在机房),我们需要对我们的路由做一下映射。就拿我的路由来举例。我的路由是TP-LINK WR340G型号,进入路由后,我们能找到一个转发规则,那里面有一个虚拟服务器的这项,点击新增条目以后会有:服务端口号、IP地址、协议、状态、常用服务端口号。我们只需在这里IP地址(服务器的局域网IP),协议选择ALL(有的路由好像没有这项,那就不需要填写了),状态选择生效,常用服务端口号选择HTTP或者WEB即可。这时默认的端口号为80。当常用服务端口号没有HTTP或者W

2021-12-19 19:10:14 444

原创 Tomcat双向SSL认证及CA数字证书安装和配置&QQ即时通信协议窥探

| 序号 | 标题 | 链接 || — | :-- | --: || 1 | OICQ通信协议及抓包示例详解 | 百度文库 || 2 | QQ传输协议分析 | 码迷 || 3 | 网络协议数据获取与QQ协议分析 | 百度文库 || 4 | wireshark抓QQ包 | 百度文库 || 5 | QQ协议分析及还原 | CSDN |UDP协议是无连接方式的协议,它的效率高,速度快,占资源少,但是其传输机制为不可靠传送,必须依靠辅助的算法来完成传输控制。QQ采用的通信协议以UDP为主,辅以TCP协

2021-12-19 19:08:44 84

原创 Tomcat双向SSL认证及CA数字证书安装和配置&QQ即时通信协议窥探(1)

| 4 | Tomcat配置双向SSL认证 | 新浪博客 博客园 || 5 | Tomcat SSL配置及Tomcat CA证书安装 | CSDN 博客园 |2、QQ即时通信协议窥探1、简述QQ使用的应用层协议是OICQ,OICQ使用的传输层协议是UDP。OICQ协议提供可靠的传输服务。OICQ协议(网络即时通讯软件/网络寻呼机)基于互联网的即时通信工具,具有即时信息收发、网络寻呼、聊天、传输文件、手机短消息服务等功能,对传统的无线寻呼和移动通讯进行增值服务。| 序号 | 标题 | 链接 ||

2021-12-19 19:06:50 130

原创 SQLlite在安卓中的基本详解和简单使用,真的太香了

super(context, name, null, version);}@Overridepublic void onCreate(SQLiteDatabase db) {db.execSQL("CREATE TABLE IF NOT EXISTS person (personid integer primary key autoincrement, name varchar(20), ageINTEGER)");}@Overridepublic void onUpgrade(SQLite

2021-12-19 19:04:43 3594

原创 Smali 语法解析——Hello World,flutter路由切换动画

.prologue.line 1invoke-direct {p0}, Ljava/lang/Object;->()Vreturn-void.end method.method public static main([Ljava/lang/String;)V.registers 3.prologue.line 6sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;sget-object v1, LHello

2021-12-19 19:02:29 277

原创 RxHttp-完美适配Android-10-11-上传-下载-进度监听,三步即可搞懂任意请求

当我们App的targetSdkVersion更改为28以上,并且运行在Android 10以上设备时,我们无法再以绝对路径的方式,去读写非沙盒目录下的文件,当然,如果App是覆盖安装(如:targetSdkVersion 28 覆盖安装为 29),则会保持原来的访问方式。requestLegacyExternalStorage属性如果我们的app将targetSdkVersion更改为28以上,且想保持原来的访问方式,则需要在清单文件中将 requestLegacyExternalStorage 的值

2021-12-19 19:00:15 509

原创 RxHttp 2000+star,协程请求,循序渐进

// name 参数在这会生成 setDomainToGoogleIfAbsent方法,可随意指定名称// className 参数在这会生成RxGoogleHttp类,可随意指定名称@Domain(name = “Google”, className = “Google”)public static String GOOGLE = “https://www.google.com”;}以上配置www.wanandroid.com为默认域名,www.google.com为非默认域名多BaseUrl

2021-12-19 18:58:21 205

原创 Android PinnedHeaderListView 详解,安卓rxjava+retorfit优点

Activitypublic class MainActivity extends Activity {@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);PinnedHeaderListView listView = (PinnedHeaderListView) findViewByI

2021-12-18 21:39:37 417

原创 android lambda语法简述,android应用程序开发语言

System.out.println("=== RunnableTest ===");// Anonymous RunnableRunnable r1 = new Runnable(){@Overridepublic void run(){System.out.println(“Hello world one!”);System.out.println(“Hello world one!”);}};// Lambda RunnableRunnable r2 = () -> {Sy

2021-12-18 21:37:24 1418

原创 Android Jetpack Compose会成为后浪把 Android xml 布局文件拍在沙滩上吗

上图是Google官网对于Compose的介绍图,熟悉Flutter的朋友,可能会觉得,这代码格式,似曾相识啊,但是也仅仅是因为都是声明式编程,格式上有稍微相似而已。那么,Compose到底是什么?Compose=========================================================================Google是这么定义的Jetpack Compose 是用于构建原生 Android 界面的新工具包。它基于声明性编程模型,因此您只需描述界

2021-12-18 21:35:44 428

空空如也

空空如也

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

TA关注的人

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