自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Android 二次封装网络加载框架,android开发文档中文

既然这样,那有没有办法解决呢?首先,我们先回想一下,网络请求那些参数是必要的,那些是非必要的,即可有可无的。必要选项url,请求网址paramsMap ,请求参数iResponseListener 请求结果的回调非必要选项context 通常是用来配置配置一些缓存等一些信息headMap 请求头tag 请求 TAG,用来区分或者取消网络请求connectTimeout 连接超时时间readTimeout 读取超时时间writeTimeout 写

2021-12-26 12:20:30 578

原创 Android View的事件分流源码,flutter页面跳转重绘

if (!isAccessibilityFocusedViewOrHost()) {return false;}// We have focus and got the event, then use normal event dispatch.event.setTargetAccessibilityFocus(false);}boolean result = false;if (mInputEventConsistencyVerifier != null) {mInputEventCons

2021-12-26 12:16:14 277

原创 Android Studio真机 设置 和 错误排查,安卓面试题2019

(拿小米(5X)手机为例)到手机设置 - 我的设备 - 全部参数 - 连续点击MINU版本即可开启开发者模式(针对未开启 开发者模式)到手机设置 - 更多设置(系统和设备)- 开发者选项 - USB调试 - 勾选 - USB安装 - 勾选。第二步:Android Studio设置开启Android Studio,新建一个简单的工程。选择Edit ConfigurationsDeployment Target Options 选择USB Device - 点击OK,保存更改第三步:运行程

2021-12-26 12:13:24 267

原创 Android Studio制作,android高级面试2020

注:window的动态库是.dll文件,而Linux下的动态库是.so文件配置NDK=====如果翻不了墙,可以到这里下载相应平台的NDK版本http://www.androiddevtools.cn/下载成功之后解压缩,然后配置系统环境变量,拿windows举例:先新建NDK_HOME然后再添加到PATH环境变量中ok,配好之后,直接可以在命令行使用ndk-build命令:这里提示没有定义NDK_PROJECT_PATH变量,暂且不管,我们后面说。然后,在Android St.

2021-12-26 12:11:59 142

原创 Android Studio中使用Git——结合GitLab,耗时两个礼拜8000字安卓面试长文

Android Studio创建项目后会自动生成.gitignore文件,这个文件可以用来忽略那些不用加入到仓库的文件。项目根目录下与module目录下都会生成该文件,如下:一般情况下我们只需要将项目根目录下的/.idea/workspace.xml与/.idea/libraries改成.idea即可,其他没有特殊要求就用默认的。如下:修改前:修改后:5.1.2 初始化本地Git仓库点击Android Studio顶部菜单栏上的VCS–>Import into Version Contr

2021-12-26 12:10:33 195

原创 Android studio 使用JitPack发布library到Github开源库

![在这里插入图片描述](https://img-blog.csdnimg.cn/2《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整内容开源分享0181217152300146.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2Jv

2021-12-26 12:09:08 1492

原创 Android-DataBinding-从入门到进阶,手机软件开发app

android:orientation=“vertical”android:padding=“20dp”tools:context=".Main3Activity"><TextView···android:text="@{goods.name}" /><TextView···android:text="@{goods.details}" />《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》【docs.qq.com/doc

2021-12-25 12:07:20 92

原创 Android---性能优化方案分享,分布式架构演进+相关笔记参考

Debug.startMethodTracing(“sample”);…// The system begins buffering the genera《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整内容开源分享ted trace data, until your// application calls stopMethodTracing(), at which time it

2021-12-25 12:04:59 211

原创 Android 面试题(附答案) _ 掘金技术征文,从青铜到王者的路线

if (millis == 0) {while (isAlive()) {wait(0);}} else {while (isAlive()) {long delay = millis - now;if (delay <= 0) {break;}wait(delay);now = System.currentTimeMillis() - base;}}}volatile和synchronize的区别Java中的线程池线程通信Java中的并发集合Java中生产者与消

2021-12-25 12:03:43 170

原创 Android 面试必备之 JVM 相关口水话,flutter开发文档

Java 堆是所有线程共享的一块数据区域,主要用来存放对象实例。它也是垃圾收集器管理的主要区域,从内存回收的角度来看,由于现代收集器基本上都采用分代回收,所以 Java 堆还可以细分为新生代和老年代。再细致一点还可以把新生代划分为 Eden 区、From Survivor 区和 To Survivor 区。从内存分配的角度来看,线程共享的 Java 堆中可能划分为多个线程私有的分配缓冲区 TLAB。不过不论如何划分,都与存放内容无关,无论哪个区域,存放的都是对象实例,进一步划分的目的是为了更好的回收内存或者

2021-12-25 12:02:20 135

原创 Android 自定义SeekBar显示进度百分比,移动开发工程师薪酬

// Set background Color// Color by resourceint bacgroundColor = attrs.getAttributeResourceValue(ANDROIDXML,“background”, -1);if (bacgroundColor != -1) {setBackgroundColor(getResources().getColor(bacgroundColor));} else {// Color by hexadecimalint b

2021-12-25 12:00:17 149

原创 Android 网络性能优化(4)弱网优化,android开发文档中文

3.2.1 基础能力层3.2.2 策略层3.2.3 接口层4. 弱网状态下的优化4.1 使用QUIC进行弱网优化4.1.1 网络库切换4.1.2 QUIC预连接4.2 复合连接4.3 其他5. 弱网测试6. 参考文章1. 背景=======================================================================移动端时段,手机网络的连接形态是无线的,即通过Wifi连接...

2021-12-25 11:59:08 704

原创 Android 绘制性能优化,1307页字节跳动Android面试全套真题解析火了

View过度绘制,导致某些像素在同一帧被绘制很多次在UI线程中做了稍微耗时的操作GC回收时暂停时间过长或者频繁的GC产生大量的暂停时间为了解决上述的问题,除了我们要在写代码时注意外,也可以借助一些工具来分析和解决卡顿问题。1.2 Profile GPU RenderingProfile GPU Rendering是Android4.1系统提供的开发辅助功能,我们可以在开发者选项中打开这一个功能。单击 Profile GPU Rendering -> On screen a..

2021-12-25 11:57:46 124

原创 Android 短信加密,联系人字母侧边栏定位,网易严选Android开发三面面经

this.name = name;}public int getId() {return _id;}public int getThreadId() {return thread_id;}public void setThreadId(int thread_id) {this.thread_id = thread_id;}public long getAddress() {return address;}public void setAddress(long address) {

2021-12-25 11:56:43 161

原创 Android 如何从应用深入到Framework (一),android学习之路

①操作系统。熟悉我的人都知道,我特喜欢把这个放在第一位,原因很简单,它确实支撑了我随后的所有知识根基,让我能够从容不迫的,将一个个系统拆解出来。我们就拿安卓来讲,启动过程Android 启动过程框架跟linux如出一辙,所以很容易迁移过来,同时,差异化的init进程,完成初始任务,创建安卓世界的孵化器,既然这里要进入安卓世界,而安卓世界的基础语言是java,那么就需要一个Java虚拟机,于是孵化器就要构造一个虚拟机,用来解析执行Java编译出来的字节流。而孵化器本身是由c cpp语言实现,于是Jav

2021-12-24 12:05:26 1971

原创 Android 地图导航调用百度地图、高德地图、腾讯地图,腾讯T3团队整理

前言=============================================================为什么调用第三方呢?集成在App里面不行吗?接入导航SDK,以百度为例,apk包体积能增加小几十兆之多,上一版本还是几兆的apk,迭代一版本直接几十兆了,落差之大,难以接受。虽说当下流量不值钱了,但是下载时长越久,客户丢失率越高。最关键的是,当下地图并非一家独大,客户应该有自主选择的权利,你集成了百度,但用户却钟爱于高德,这极为尴尬。且当下包括微信等一众主

2021-12-24 12:04:02 799 3

原创 Android 图像处理,美团Android研发岗二面

Matrix:其中e,j,o,t为偏移量aR+bG+cB+dA+efR+gG+hB+iA+jkR+lG+mB+nA+opR+qG+rB+sA+t=R1G1B1A1在onCreate函数中用post来获取组件的宽高:mGroup.post(new Runnable() {@Overridepublic void run() {mEtWidth = mGroup.getWidth() / 5;mEtHeight = mGroup.getHeight() / 4;addEts(.

2021-12-24 12:03:05 112

原创 Android 启动优化(五)- AnchorTask 1,移动跨平台开发框架

我们要怎么使用它呢1        val project =2            AnchorProject.Builder().setContext(context).setLogLevel(LogUtils.LogLevel.DEBUG)3  &nbsp.

2021-12-24 12:01:49 370

原创 Android 切换应用主题风格,androidmvp模式

<?xml version="1.0" encoding="utf-8"?>主题定义好了,然后就是在布局文件中引用了,里面有?号的地方就是引用以上定义的label:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android=“http://schemas.android.com/apk/res/android”android:layout_width=“fill_parent”andr

2021-12-24 12:00:26 127

原创 Android 关于状态栏开发的几件事,Android面试题目

方式有三种@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_fullscreen_no_text);//方式一//getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);//方式二//getWi

2021-12-24 11:59:24 247

原创 Android 使用Google Map API;云计算概念IaaS,PaaS,安卓网络通信面试题

云计算概念IaaS,PaaS,SaaS,CaaS,MaaS=============================近期接触了一个云平台提供商,介绍自己是“国内首家智能硬件PaaS云平台”,那么PaaS是什么意思呢?IaaSInfrastructure-as-a-Service(基础设施即服务) 第一层叫做IaaS,有时候也叫做Hardware-as-a-Service。几年前如果你想在办公室或者公司的网站上运行一些企业应用,你需要去买服务器,或者别的高昂的硬件来控制本地应用,让你的业务运行..

2021-12-24 11:58:23 163

原创 Android 代码混淆 混淆方案,android跨平台框架

====Android中的“混淆”可以分为两部分,一部分是Java 代码的优化与混淆,依靠 proguard混淆器来实现;另一部分是资源压缩,将移除项目及依赖的库中未被使用的资源(资源压缩严格意义上跟混淆没啥关系,但一般我们都会放一起用)。代码压缩代码混淆是包含了代码压缩、优化、混淆等一系列行为的过程。如上图所示,混淆过程会有如下几个功能:压缩。移除无效的类、类成员、方法、属性等;优化。分析和优化方法的二进制代码;根据proguard-android-optimize.txt中的描述,优化可能

2021-12-24 11:57:14 463

原创 Android 三类框架的理解以及MVVM框架的使用,开发人员必学

View层不同,MVC的View层指的是XML布局文件或者是用Java自定义的View,MVP的View层是Activity或者Fragment。使用传统的MVC,其中的View,对应的是各种Layout布局文件,但是这些布局文件中并不像Web端那样强大,能做的事情非常有限。MVP的View层Activity在实际项目中,随着逻辑的复杂度越来越大,Activity臃肿的缺点仍然体现出来了,因为Activity中还是充满了大量与View层无关的代码,比如各种事件的处理派发,就如MVC中的那样View层和C..

2021-12-24 11:55:52 1127

原创 Android _ MVVM 设计模式的一种实现方式,安卓内存监控悬浮窗

软件设计模式是在软件设计中,对于给定上下文的常见问题的通用、可重用的解决方案。 维基百科以上是一个关于软件设计模式的非常简短的定义,如果你想更深入了解,网上有很多资源可供参考。好的,我们已经知道了问题所在,并且我们也知道有方法可以去解决它。MVVMV 表示 View,它可以是一个 Activity、Fragment,现在它甚至可以是 Composables 了!ViewModel 表示 Jetpack 组件中的 ViewModel,它是一个可以不受界面配置变化影响而存在的类。OK,然后让我们..

2021-12-24 11:54:48 334

原创 Android 自定义View 代码复用,已开源

android:layout_height=“wrap_content”android:orientation=“horizontal”><Buttonandroid:id="@+id/loginButton"android:layout_width=“0dp”android:layout_height=“wrap_content”android:layout_weight=“1”android:text=“Login” /><Buttonandroid:id="@

2021-12-23 11:47:45 165

原创 Android 网络:使用URLConnection提交请求,获取html代码加载WebView

else{out.println(“登录失败!”);}%>web.xml :<?xml version="1.0" encoding="utf-8"?><web-app xmlns=“http://java.sun.com/xml/ns/javaee”xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”xsi:schemaLocation="http://java.s.

2021-12-23 11:46:21 141

原创 Android 组件化面试必备,android输入法开发源码

如果我们要为某个已经存在的组件,重新开发一个新组件,将变得非常可行。组件内的重构也将变得非常可行。新的组件的设计只要保证对外提供的接口,完全符合,旧组件对外提供的接口5、组件的热插拔,成为可能(如果构建正确)我们想象下,在APP运行时,business中的组件可以动态加载,也可动态卸载。那么我们可以轻松实现组件的懒加载:用户用到的组件,那么就加载进来。用完之后便可以卸载。6、组件的独立编译、测试,成为可能(如果构建正确)大的android工程项目,build一次要到.

2021-12-23 11:45:24 420

原创 Android 组件化面试必备(1),Android面试题2020

如果我们要为某个已经存在的组件,重新开发一个新组件,将变得非常可行。组件内的重构也将变得非常可行。新的组件的设计只要保证对外提供的接口,完全符合,旧组件对外提供的接口5、组件的热插拔,成为可能(如果构建正确)我们想象下,在APP运行时,business中的组件可以动态加载,也可动态卸载。那么我们可以轻松实现组件的懒加载:用户用到的组件,那么就加载进来。用完之后便可以卸载。6、组件的独立编译、测试,成为可能(如果构建正确)大的android工程项目,build一次要到.

2021-12-23 11:44:08 1223

原创 Android 直播中弹幕、带货和键盘的交互,先收藏了

监听键盘状态的实现方法键盘的高度怎么获取监听键盘弹出收起========因为Android不能对键盘做监听,网上的方案都是用viewTreeObserver去间接的判断的view.viewTreeObserver.addOnGlobalLayoutListener {// 在这里通过《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整内容开源分享判断屏幕的可见高度,间..

2021-12-23 11:42:45 135

原创 Android 消息推送OnePush,2021年互联网大厂Android面经总结

dependencies {compile ‘com.peng.library:one-push-core:lastVersion’}2. 添加第三方推送依赖(根据自己的需求进行添加,当然也可以全部添加)dependencies {//华为推送和HMS服务只能选择其中的一个//compile ‘com.peng.library:one-push-huawei:lastVersion’compile ‘com.peng.library:one-push-huawei-hms:lastVersio

2021-12-23 11:41:44 144

原创 Android 标签栏pagerslidingtabstrip用法实例(含Demo)

notifyDataSetChanged();}public void setOnPageChangeListener(OnPageChangeListener listener) {this.delegatePageListener = listener;}public void notifyDataSetChanged() {tabsContainer.removeAllViews();tabCount = pager.getAdapter().getCount();for (int i

2021-12-23 11:40:42 702

原创 Android 摄像头调用(不含拍照),kotlin开源

mCurrentCamIndex = camIdx; //设置前置摄像头id}catch (RuntimeException e){Log.e(TAG,“相机打开失败:” + e.getLocalizedMessage());}}}return mCamera;}设置旋转角度private void setCameraDisplayOrientation(Activity activity,int cameraId,Camera camera){

2021-12-23 11:37:08 1090

原创 Android 单元测试之PowerMock,字节跳动面试

之前学过了 Mockito框架 Android单元测试之 Mockito,它是Mock的一种测试框架,除了Mockito,Mock框架还有 EasyMock、jMock等。但是这些部分的Mock框架都有一个缺点:不能Mock 静态、构造、私有、final的方法,这是因为测试架构设计良好的代码, 一般不需要这些功能,但是如果在老代码上新增单元测试时,就不得不面临这些问题了。而PowerMock正是解决这样的问题而诞生,目前,PowerMock仅支持Mockito和EasyMock两种框架。2. 使用=

2021-12-22 11:23:13 340

原创 Android 关于对RFID功能的开发记录,Android开发者

sourceSets { main { jniLibs.srcDirs = [‘libs’] } }]将这些文件添加完之后不要急着去点击Make Project【小锤子】,要先在build.gradle文件中添加如下代码:implementation files('libs/xUtil《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整内容开源分享s-2.5.5.jar’)imple

2021-12-22 11:21:48 478

原创 Android 使用Face++ SDK进行人脸识别和年龄检测,vs开发android教程

import java.io.ByteArrayOutputStream;import org.json.JSONArray;import org.json.JSONException;import org.json.JSONObject;import android.app.Activity;import android.content.Intent;import android.database.Cursor;import android.graphics.Bitmap;import a

2021-12-22 11:20:23 595

原创 Android 中高级面试题:Activity是如何实现LifecycleOwner的?

Activity虽然实现了LifecycleOwner接口,但是并没有实现相关处理,而是通过添加一个Fragment来代理Lifecycle的分发。这种通过Fragment代理Activity行为的设计在其他一些库也经常出现,相对来说更加无侵和优雅。1、SupportActivityActivity通过继承SupportActivity实现LifecycleOwner接口。注意在AndroidX中SupportActivity改名为ComponentActivity。public class Supp

2021-12-22 11:18:57 235

原创 android 中DrawerLayout实现抽屉,flutter瀑布流显示其它组件

private ArrayList list = new ArrayList();private ActionBarDrawerToggle toggle;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实

2021-12-22 11:17:32 95

原创 android 个人中心下拉弹回效果-PullscrollView,那些BAT大厂的Android面试官到底在想些什么

*/public void setHeader(View view) {mHeader = view;}/**设置状态改变时的监听器@param turnListener*/public void setOnTurnListener(OnTurnListener turnListener) {mOnTurnListener = turnListener;}@Overrideprotected void onFinishInflate() {if (getChildCo

2021-12-22 11:16:07 84

原创 Android _ Jetpack 处理回退事件的新姿势 —— OnBackPressedDispatcher

2、在 Fragment 根布局中设置按键监听 setOnKeyListener(缺点:不灵活 & 多个 Fragment 监听冲突)。2. OnBackPressedDispatcher 有哪些 API?主要有以下几个,其他这几个 API 都比较好理解。其中 addCallback(LifecycleOwner, callback) 会在生命周期持有者 LifecycleOwner 进入 Lifecycle.State.STARTED 状态,才会加入分发责任链,而在 LifecycleO.

2021-12-22 11:14:42 254

原创 Android WindowManager窗口类型,flutter教程gitbook

of the window happens as that of a top-level window, notas a child of its container.ZMS:OptionMenu、ContextMenu的默认类型*/public static final int TYPE_APPLICATION_ATTACHED_DIALOG = FIRST_SUB_WINDOW+3;/**Window type: window for showing overlays ..

2021-12-22 11:13:17 223

空空如也

空空如也

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

TA关注的人

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