程序员
文章平均质量分 87
智恩架构师
这个作者很懒,什么都没留下…
展开
-
使用Jetpack Compose完成自定义手势处理,android开发技术难点
onGesture(必须):当拖动、缩放或旋转手势发生时回调suspend fun PointerInputScope.detectTransformGestures(panZoomLock: Boolean = false,onGesture: (centroid: Offset, pan: Offset, zoom: Float, rotation: Float) -> Unit)💡 Tips关于偏移、缩放与旋转,我们建议的调用顺序是 rotate -> scale -&原创 2022-03-01 23:21:04 · 538 阅读 · 0 评论 -
你真的了解Android-系统启动流程吗?,移动端开发技术需要购买
b 业余时间经常打游戏、追剧、熬夜,目前月薪 15k面试官:你了解 Android 系统启动流程吗?b:系统首先会启动 init 进程,然后 init 进程会通过 init.rc 脚本做一些初始化工作,启动一些比较重要的服务进程,包括 Zygote、service manager 等。面试官:system_server 进程是什么时候启动的?b:system_server 是在 Zygote 进程中启动的。面试官:为什么要在 Zygote 中启动,而不是由 init 直接启动呢?b:嗯… 这.原创 2022-03-01 23:18:13 · 333 阅读 · 0 评论 -
你是怎么思考的?,蓝牙ble开发实战
笔者之前是做app开发的,那个时候很简单,产品经理只需要把需求文档扔出来,设计师根据原型图把图切好,我们开发人员就可以开工按部就班把东西做出来就行了,最后东西是做出来,但没有人用,那时我就在想,做这个东西的价值在哪里,它解决了什么问题,我们还能再做些什么?很遗憾的是,产品最终没有成熟落地,没有持续迭代优化,最终也就不了了之。在互联网行业当中,项目失败是很正常的事情,但我们做每一件事情都应该有它的价值,即使是失败了,但也应该从中吸取到不一样的东西。当时我确实是这么想,所以我才选择离开那里,加入一个真正的互联网原创 2022-03-01 23:16:48 · 398 阅读 · 0 评论 -
仿QQ6,kotlin循环for
第二步:引用布局<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android=“http://schemas.android.com/apk/res/android”xmlns:app=“http://schemas.android.com/apk/res-auto”xmlns:tools=“http://schemas.android.com/tools”android:layout_width=“ma..原创 2022-03-01 23:13:58 · 166 阅读 · 0 评论 -
以下未发布-Android的多线程以及异步消息处理机制,android移动开发基础案例教程源码
1.Message:Message 是在线程之间传递的消息,它可以在内部携带少量的信息,用于在不同线程之间进行数据交换。除了 what 字段,还可以使用 arg1 和 arg2 来携带整型数据,使用 obj 来携带 Object 数据。2、Handler:Handler主要用于发送和处理消息的。发送消息一般是使用Handler的sendMessage()方法,而发出的消息经过一系列的处理后,最终会传递到Handler的handleMessage()方法中。3、MessageQueue:Messag原创 2022-03-01 23:12:33 · 249 阅读 · 0 评论 -
weex:使用list实现下拉刷新和上拉加载更多,书籍+视频+学习笔记+技能提升资源库
this.refreshing = true;setTimeout(() => {this.lists = [1, 2, 3, 4, 5];this.refreshing = false;}, 2000);},onpullingdown(event) {modal.toast({message: “刚开始下拉…”,duration: 1});}}};由于weex进行了迭代,上面的可能跑不起来了!请看下面:使用weex-ui实现项目可用列表<ref原创 2022-02-17 23:20:32 · 1434 阅读 · 0 评论 -
WebView加载不出Html5网页的解决方法,android studio 拾色器,ViewPager高度问题
以前的版本是可以箱ps一样直接用笔可以直接进行试色,新版的as是不能的,我么可以通过快捷键进行试色;androidx ViewPager高度无法wrap_content问题`package com.base.emergency_bureau.view;import android.content.Context; import android.util.AttributeSet; import android.view.View;import androidx.viewpager.widget.V原创 2022-02-17 23:19:08 · 215 阅读 · 0 评论 -
webRTC(二十二),看懂这些帮你轻松解决就业问题
mediaMuxer.release();mediaMuxer = null;}}@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_save_screen);DisplayMetrics metric = new DisplayMetrics();getWindowManager().原创 2022-02-17 23:17:42 · 1557 阅读 · 0 评论 -
View与ViewGroup绘制原理解析(二),2021Android开发面试解答之设计模式
return size + mode;} else {return (size & ~MODE_MASK) | (mode & MODE_MASK);}}MeasureSpec通过将SpecMode和SpecSize打包成一个int值来避免过多的对象内存分配,为了方便操作,其提供了打包和解包的方法。SpecMode和SpecSize也是一个int值,一组SpecMode和SpecSize可以打包为一个MeasureSpec,而一个MeasureSpec可以通过解包的形式得出其原始的原创 2022-02-17 23:16:17 · 136 阅读 · 0 评论 -
ViewModel源码阅读指南,音视频开发进阶指南pdf
ViewModel的创建流程不要将ViewModel想的多么神秘,它就是空类,唯一的作用,就是将你的对象能够挂上ViewModelStore的Map中。new ViewModelProvider(this, new ViewModelProvider.NewInstanceFactory()).get(TimerViewModel.class)一般我们直接使用这种方式获取一个ViewModel对象,想一下为什么不选择直接传入一个ViewModel对象?ViewModelProvider.get()这里原创 2022-02-17 23:14:52 · 158 阅读 · 0 评论 -
Unable to add window --token is not valid,flutter技术解析与实战
Flags: 0x9be65Package: com.android.*** v15 (4.0.4)Build: ***:4.0.4/IMM76D/1348165925:eng/test-keysandroid.view.WindowManager$BadTokenException: Unable to add window – token android.os.BinderPro原创 2022-02-17 23:10:38 · 506 阅读 · 0 评论 -
Stetho简化Android调试(一),Android开发究竟该如何学习
private void initOkHttp() {okHttpClient = new OkHttpClient().newBuilder().addNetworkInterceptor(new StethoInterceptor()) // 这里添加一个拦截器即可.build();}}至此,我们的应用配置完毕。是不是超级简单?接下来看怎么使用Developer Tools查看应用的各种信息。3.打开Chrome输入chrome://inspect=================原创 2022-02-17 23:07:48 · 150 阅读 · 0 评论 -
【中级—,android开发入门pdf
[](javascript:????因此,通过以上分析,我们知道在Java中也有内存泄漏,但范围比C++要小一些。因为Java从语言上保证,任何对象都是可达的,所有的不可达对象都由GC管理。对于程序员来说,GC基本是透明的,不可见的。虽然,我们只有几个函数可以访问GC,例如运行GC的函数System.gc(),但是根据Java语言规范定义, 该函数不保证JVM的垃圾收集器一定会执行。因为,不同的JVM实现者可能使用不同的算法管理GC。通常,GC的线程的优先级别较低。JVM调用GC的策略也有很多种,有的是原创 2022-02-16 18:47:31 · 250 阅读 · 0 评论 -
【中级—(1),Android面试Android基础
进入:<?xml version="1.0" encoding="utf-8"?>退出<?xml version="1.0" encoding="utf-8"?>动画的style在指定的位置显示//显示窗口window.showAtLocation(MainActivity.this.findViewById(R.id.main), Gravity.BOTTOM|Gravity.CENTER_HORIZONTAL, 0, 0); //设置layout在Po原创 2022-02-16 18:46:06 · 125 阅读 · 0 评论 -
【Android高级进阶】论一个普通大学电子商务大三学生,flutter项目案例
**面试官:**点点头,似乎觉得还可以。学过C/C++吗?**我:**很尴尬,作为一个电子商务专业的学生很怕被问到这个问题,不过还是如实地向他说明情况,没学过C/C++,但是学过JAVA,数据结构、算法、计算机网络,并且我在自学操作系统。**面试官:**显然很惊讶没有学过C,但是考虑到是Android开发,所以也就没多为难我,并且了解到我自学操作系统露出了笑容,接着让我说一下算法。**我:**咳 ???? ,算法准备的不是很充分,所以鸡贼的向他讲了最简单的冒泡排序,还没讲完他就频频点头。舒了一口气。原创 2022-02-16 18:44:41 · 248 阅读 · 0 评论 -
【Android每日一问】手撸单例以及优缺点分析,2021Android开发社招面试总结
优点:获取对象的速度快;避免了多线程的同步问题。缺点:类加载过程慢。饿汉变种单例(静态内部类)public class Singleton {private Singleton() {}private static class SingletonHolder{private static final Singleton INSTANCE = new Singleton();}public static Singleton getInstance() {return Singleto.原创 2022-02-16 18:41:51 · 2143 阅读 · 0 评论 -
【Android】史上最简单,android 工作资料
}Step 2. Add the dependencydependencies {compile ‘com.github.mcxtzhang:SwipeDelMenuLayout:V1.2.1’}Step 3. 在需要侧滑删除的ContentItem外面套上本控件,在本控件内依次排列ContentItem、菜单即可:至此 您就可以使用高仿IOS、QQ 侧滑删除菜单功能了(侧滑菜单的点击事件等是通过设置的id取到,与其他控件一致,不再赘述)Demo里,我的ContentItem是一个TextV原创 2022-02-16 18:40:26 · 494 阅读 · 0 评论 -
【Android】5,android开发app代码
@Overrideprotected void onStart() {super.onStart();System.out.println(“onStart============”);}@Overrideprotected void onResume() {super.onResume();System.out.println(“onResume============”);}@Overrideprotected void onPause() {super.onPause();S原创 2022-02-16 18:39:01 · 1382 阅读 · 0 评论 -
【Android】20,安卓内存监控apk
}3.在SecondAPP里,修改MyService。public class MyService extends Service {//是否运行标识符,true -> 运行private boolean running;//默认显示的信息private String info = “正在运行”;public MyService() {}@Overridepublic IBinder onBind(Intent intent) {return new IMyServiceAidl原创 2022-02-16 18:37:36 · 513 阅读 · 0 评论 -
【Android】15,flutter安装包优化
//绑定事件btnStart.setOnClickListener(this);btnStop.setOnClickListener(this);btnBind.setOnClickListener(this);btnUnBind.setOnClickListener(this);//实例化服务intent = new Intent(this,MyService.class);}//处理事件@Overridepublic void onClick(View v) {switch (v.原创 2022-02-16 18:36:11 · 1923 阅读 · 0 评论 -
[最新] Android 代码规范大全(Android开发速看),2021最新Android开发者学习路线
| — | — | — || Activity 类 | 模块名 + Activity | 闪屏页类 SplashActivity || Fragment 类 | 模块名 + Fragment | 主页类 HomeFragment || Service 类 | 模块名 + Service | 时间服务 TimeService || BroadcastReceiver 类 | 功能名 + Receiver | 推送接收 JPushReceiver || ContentProvider 类 | 功能名原创 2022-02-15 18:40:41 · 546 阅读 · 0 评论 -
你是否了解APP耗电问题?深入探索 Android 电量优化,醍醐灌顶
batterystats 所记录的电量统计数据源自于 BatteryStatsService-电量统计服务,其实现类为 BatteryStatsImpl,内部正是使用的 PowerProfile 。BatteryStatsImpl 为每一个应用创建与之对应的 UID 来监控器系统资源的使用情况,其统计了 12 大模块的电量消耗,如下所示:Camera、Audio、VideoBluetooth、Network、WakelockSensor、Radio、ScreenWIFI、CPU、G原创 2022-02-05 16:31:31 · 1074 阅读 · 0 评论 -
作为一名优秀的Android 开发,该如何写好自己的简历,android面试算法题
2.性能上面带来了多少提升,如编译速度的提升,提升了多少,降低了多少 min等3.你在这个项目作出了什么成绩,比如主导搭建了代码扫描框架,自动扫描,提高代码质量,减少 review 成本。千里马常有,而伯乐不常有。一定要重视简历,让简历能够反映你的真实水平,先不说做到锦上添花,至少不要拖后腿。二、展现自己的个人技能个人技能这块,也是简历中必不可少的一部分。第一,先说最重要的一点,按照掌握的程度分为几个等级,精通,熟悉,掌握,了解,强烈建议不要写精通,道理你懂的。第二:不熟悉的点不要.原创 2022-02-05 16:30:06 · 2803 阅读 · 1 评论 -
从投递到拿到offer,这份Android面试秘籍一文全解,2021年阿里+头条+腾讯大厂Android笔试真题
切勿答非所问,偷换概念。当面试官提出一个你并不是很了解的问题时候,即使冷场也不要答非所问,进行偷换概念。因为面试最讲究的就是真诚二字。你这样做只会加深面试官对你的厌恶。切勿侃侃而谈。有很多人在面试时,为了能够在面试官面前一展"风采",常常是夸夸其谈,口若悬河,殊不知这其实是犯了大忌的。因为在面试官眼里,你这样啪啦啪啦没完没了地讲下去,面试官可能会有如下四种理解:没有快速答到要点,认为你并没有get到这个问题的本质,对这块掌握得不够。卖弄自己的知识,日后和这种人合作起来会不会很费力?..原创 2022-02-05 16:28:41 · 231 阅读 · 0 评论 -
从入门到实战,Android学习路线大全,程序员翻身之路
多Acitivity管理:AndroidManifest.xml文件的作用Intent的使用方法使用Intent传递数据的方法启动Activity的方法IntentFilter的使用方法Activity Group的使用方法自定义控件实现方法:自定义ListView的实现方法可折叠ListView的使用方法自定义Adapter的实现方法自定义View的实现方法动态控件布局的上实现方法android网络编程与数据存储1、基于原创 2022-02-05 16:27:16 · 11822 阅读 · 3 评论 -
从事Android开发面试通过全靠狂刷这份面试题,从11K涨到25K+
Java 的泛型final、finally、finalize 的区别接口、抽象类的区别Android 相关自定义 View事件拦截分发解决过的一些性能问题,在项目中的实际运用性能优化工具性能优化 (讲讲你自己项目中做过的性能优化)Http[s]请求慢的解决办法(DNS、携带数据、直接访问 IP)缓存自己如何实现(LRUCache 原理)图形图像相关:OpenGL ES 管线流程、EGL 的认识、Shader 相关SurfaceV..原创 2022-02-05 16:25:51 · 111 阅读 · 0 评论 -
今日头条文字渐变特效项目实战(一),阿里架构师经验分享
ascent:建议顶点线center:中心线baseline:基线descent:建议底部线bottom:底部线这六条线分别起什么作用呢?首先是top和bottom,这两条线很好理解,它分别是顶端和底端,绘制文字时肯定不会超过这两条线然后是ascent和descent,这两条线是建议的顶点线和建议底端线,一般情况我们绘制文字是不会超过这两条线的,但是对于一些异形字(论坛中经常出现的跨楼层的字)是可以超出这两条线的再则是center线,这条线也很好理解,它就..原创 2022-02-05 16:23:01 · 213 阅读 · 0 评论 -
五分钟带你读懂TCP协议(图文并茂),关于Android程序员最近的状况
TCP 是互联网核心协议之一,本文介绍它的基础知识。一、TCP 协议的作用互联网由一整套协议构成。TCP 只是其中的一层,有着自己的分工。(图片说明:TCP 是以太网协议和 IP 协议的上层协议,也是应用层协议的下层协议。)最底层的以太网协议(Ethernet)规定了电子信号如何组成数据包(packet),解决了子网内部的点对点通信。(图片说明:以太网协议解决了局域网的点对点通信。)但是,以太网协议不能解决多个局域网如何互通,这由 IP 协议解决。(图片说明:IP 协议可以连接多个局域网。)I原创 2022-02-04 17:20:58 · 6961 阅读 · 1 评论 -
互联网公司为什么那么喜欢问多线程的面试:15道面试题带你了解
这是一个相对艰难的多线程面试问题,它能达到很多的目的。第一,它可以检测侯选者是否能实际的用 Java 线程写程序;第二,可以检测侯选者对并发场景的理解,并且你可以根据这个问很多问题。如果他用 wait()和 notify()方法来实现阻塞队列,你可以要求他用最新的 Java 5 中的并发类来再写一次。5)用 Java 写代码来解决生产者——消费者问题。与上面的问题很类似,但这个问题更经典,有些时候面试都会问下面的问题。在 Java 中怎么解决生产者——消费者问题,当然有很多解决方法,我已经分享了原创 2022-02-04 17:18:09 · 121 阅读 · 0 评论 -
为什么有些大公司的技术,实在是弱爆了?,移动网页开发工具
回复了几个粉丝朋友之后,这里也想跟大家分享下这个问题:一.大公司业务极其复杂=======================================================================赵某,毕业第一年在腾讯工作,做QQ游戏大厅,当时用的IDE是VS2006,用的版本控制工具,叫 ClearCase(估计用过的人不多),IBM 开发的。特点是极其严谨、非常强大,但流程极为繁琐,用起来简直让人抓狂,这还是腾讯花了3000万找IBM买的。而QQGAME这个产品的代码量几原创 2022-02-04 17:15:19 · 140 阅读 · 0 评论 -
不要放过那个装X的阿里,android游戏开发大全第二版PDF
这都不是被导师剥削的问题,这个是自然规律在逼着你。你和水稻谈休假问题,水稻不会停下来等你。张启发院士带的博士生,甚至是院士本人,绝大部分时间,就是一年四季跟着水稻转。有认识张启发院士的学生说,张院士去剪头发,永远只在学校门口的理发店剪,永远只等十分钟。超过十分钟就直接走,不浪费任何时间。听起来肃然起敬吗?不,我只觉得心疼。但就是这样一群人,哪怕做到顶尖,仍然不可能发财。虽然发财肯定不是人生唯一的价值追求,但如果一个行业做到顶级的那些人仍然无法获得物质上的满足,这个行业肯定是很难持续发展下去的。原创 2022-02-04 17:13:54 · 207 阅读 · 0 评论 -
上门洗车APP --- Android客户端开发 之 网络框架封装介绍(一)
import java.io.File;import org.apache.http.Header;import org.gaochun.android.http.AsyncHttpClient;import org.gaochun.android.http.RequestParams;import org.gaochun.android.http.network.IRequestCallback;import org.gaochun.android.http.network.RequestCal原创 2022-02-04 17:12:30 · 206 阅读 · 0 评论 -
三年 Android 经验面经,面试总结+解答分享
用过Flutter?–> Flutter学过好几遍了,但是一直没有商业项目来apply,真的想尝试,但是精力有限,我还是先挖深度吧分层架构怎么理解?–> 这个需要结合组件化、模块化来讲,也是个演进过程,先拆,再聚合为一层,拆的过程也是煎熬的(尤其是原先项目很耦合的情况,根本没法多人协作进行,merge全是冲突,举棋不定的需要temp层),可以结合OSI七层网络架构,Binder分层等经典实现升华反射的原理和应用?–> 反射是Java的一大特性,无处不在,ide代码提示就是.原创 2022-02-04 17:11:05 · 131 阅读 · 0 评论 -
三年 Android 开发的面试心经(后悔当初没有拿 N+1,android应用开发案例教程
公司裁员的时候我们老大对我说:你留下来好好干,后面不管公司怎么分股份、期权、肯定不会少你。当时我很信任老大,跟着老大一起干感觉就是一种享受。但是没有想到公司裁员后,公司内部动荡很大,主业务线从客户端A业务线转移到B业务上。我主要负责的是A客户端的架构,于是我闲下来了。B业务线那边很忙,没时间配合我做一些架构上的事情。于是我每天就在脑补的查看各种学习文档,补充知识点能量。做了几天后,后悔自己当时没有那 N+1 走人,有种被老大忽悠的感觉。因为后面发生的是我就暂且不讲了。只怪本人经历尚浅,看不清一些大的趋.原创 2022-02-04 17:09:39 · 1386 阅读 · 0 评论 -
原生APP与h5交互的原理,android开发的基础知识
javascript:android:ios:2. h5 调用 app 的代码因为 h5 不能直接访问宿主 app,所以这种调用就相对复杂一点。这种调用常用有两种方式:由 app 向 h5 注入一个全局js对象,然后在 h5 直接访问这个对象由 h5 发起一个自定义协议请求,app 拦截这个请求后,再由 app 调用 h5 中的回调函数2.1 由 app 向 h5 注入一个全局js对象这种方式沟通机制简单,比较好理解,并且对于 h5 来说,没有新的东西,所以是比较推荐的.原创 2022-02-03 20:41:12 · 795 阅读 · 0 评论 -
华为手机刷微博体验更好?技术角度的分析和思考,Android基础72问
在 2020-6 月左右分析这个问题的时候,“列表滑动的同时加载图片” 这个功能还是关闭的,只有华为手机做了优化才有效果,其他手机是 “滑动停止之后才会加载图片”在 2020-8 月再看这个问题的时候,“列表滑动的同时加载图片” 这个功能在其他手机上已经开启华为的 PerfSDK 还有效果么?答案是有,具体分析可以看下文,因为有了这个 SDK,不仅对微博有好处(减少图片加载个数),对华为也有好处(提升微博主页列表在华为手机上的滑动体验,即 Fling 曲线优化) ;而粗暴开启 “列表滑动的同..原创 2022-02-03 20:39:47 · 1183 阅读 · 0 评论 -
十年辗转4厂,百场校、社招面试后,kotlin源码
敲黑板!!!没有项目经验就造项目经验!!!!现在网上那么多的实战教程、github上遍地的源码分享,都可以为你所用。在面试时,这些项目经验都可以写上,最关键的是自己要弄通、弄会,尽量先仿一遍,自己再从头到尾自己再写一遍,把所有涉及到的知识点都弄通弄会。面试的时候,就实话实说,就说你自己仿的,没有关系,做为面试官,我们更看重的是你会啥并且你是不是真的会。说了这么多,其实想告诉大家的是,不要以为在985/211名校就能不努力了,每年名校毕业找不到工作的大有人在。只有在名校且成绩好的同学,才不需要努力。而可.原创 2022-02-03 20:38:23 · 685 阅读 · 0 评论 -
十余年Android开发分享:Android 开发现状与未来,android开发游戏app
Kotlin==================================================================Kotlin已经成为Android开发的官方语言,Android的新的文档和Sample代码都开始转向 Kotlin,在未来Java将加速被 Kotlin替代。 https://developer.android.google.cn/kotlinKTX======================================================原创 2022-02-03 20:36:57 · 198 阅读 · 0 评论 -
前端开发:JS中查找数组的目标元素方法find()、findIndex()的使用
//空置类型选择onConfirm1(value) {this.currentItem.VacancyID = this.columns2.find((a)=>a.Name == value).ID;},2.获取数组中选择的item中的ProjectName和ProjectNewNo,和数组中对应的一致的第一个元素projectDetail() {if (this.value) {return this.sourcedata.filter((item) => {return [原创 2022-02-03 20:35:32 · 1695 阅读 · 0 评论 -
别瞎学了,面试官会问的点都给你整理好了,,kotlin开发快速入门与实战PDF
可以这么说 : 初中升高中,高中升大学。也就是在我们的学生时代,努力的回报率可能不尽人意。高考想考个名牌大学,大多都是天资聪颖或是毅力顽强。但是,读了大学之后考研,考进名牌大学的难度会比高考时期小蛮多的(考上研的同学分享的心得)。最后说到工作,工作的努力往往带着很大的目的性,通过自身的不断学习积累,回报率会比考研还高。也就是 高考<考研<工作飞升。好环境能让人跑的更快。PS : 在绿皮车上跑步,很难追上在快车或者动车走路的人。面试分享====Android四大组件是原创 2022-02-03 20:34:07 · 188 阅读 · 0 评论