作者\/
文章平均质量分 82
普通网友
这个作者很懒,什么都没留下…
展开
-
简单好用的自定义Dialog(一)
上面介绍的DialogInterface接口,还提供了一系列的事件响应,这三个按钮均需要传递一个 DialogInterFace.OnClickListener接口对象,实现其点击事件的触发,在这个接口中需要实现一个 onClick(DialogInterface dialog,int which),dialog为当前触发事件的对话框对象接口,可以直接强制转换为AlterDialog进行操作;builder.setNeutralButton(“忽略”, new OnClickListener() {原创 2024-05-29 00:51:33 · 815 阅读 · 0 评论 -
程序性能优化之布局检测与优化(二)下篇
1)如果在叶节点或者ViewGroup中,只有极少的子节点,这可能反映出一个问题,应用可能在设备上运行并不慢,但是你需要指导为什么这个节点是红色的,可以借助Systrace或者Traceview工具,获取更多额外的信息;通过设置环境变量,export ANDROID_HVPROTO=ddm,我用小米note, 5.0系统的手机,发现并无效果,简书上有童鞋用Nexus的手机时可以正常使用呢的,目前暂未找到原因。2)如果一个视图组里面有许多的子节点,并且测量阶段呈现为红色,则需要观察下子节点的绘制情况;原创 2024-05-29 00:51:02 · 1003 阅读 · 0 评论 -
一致性hash
***/@Override@Override@Override@Override好,有什么问题呢,测试一下@Before@Test//用于检查数据分布情况i++) {count = 1;System.out.println(“初始化数据分布情况:” + countmap);// 正常情况下的去获取数据,命中率i++) {if (node!原创 2024-05-29 00:14:06 · 875 阅读 · 0 评论 -
Android IPC 通讯机制源码分析【下】
当Binder kernel接收到数据后,service_mananger线程的ThreadPool就会启动,service_manager查找到 CameraService服务后调用binder_send_reply,将返回的数据写入Binder kernel,Binder kernel。mHandle为0,BpBinder继续往下调用IPCThreadState:transact函数将数据发给与mHandle相关联的Service Manager Process。原创 2024-05-28 23:16:37 · 463 阅读 · 0 评论 -
设计模式之观察者模式
其实相当于一个监听,实时的监听你想要监听的内容。1.能够在某些页面设置完了后直接通知其他监听了这个事件的页面立即刷新,而不需要用户回到某些页面的时候再刷新。@Todo 全局的观察者监听,注册在application中,不用的时候一定要解除注册。注册监听,不需要的时候要取消监听,可在ondestory()中取消。@param action 需要传递的action要与注册的一样,2.能够区分是哪些事件通知的,从而针对不同的事件进行不同的处理。3.能够动态的扩展事件类型,可以让调用者很快的注册和监听事件。原创 2024-05-28 21:28:13 · 747 阅读 · 0 评论 -
设计模式 策略模式 以角色游戏为背景
写完之后,你自己似乎没有当初那么自信了,你发现代码中已经存在相当多重复的代码,需要考虑重新设计架构了。于是你想,要不把每个技能都写成接口,有什么技能的角色实现什么接口,简单一想,觉得这想法高大尚啊,但是实现起来会发现,接口并不能实现代码的复用,每个实现接口的类,还是必须写自己写实现。遵循设计的原则,找出应用中可能需要变化的部分,把它们独立出来,不要和那些不需要变化的代码混在一起。我们发现,对于每个角色的display,attack,defend,run都是有可能变化的,于是我们必须把这写独立出来。原创 2024-05-28 21:27:42 · 570 阅读 · 0 评论 -
征服Android面试官路漫漫(一):线程攻略,夯实基础很重要!
**@Overridereturn “谭嘉俊”;// 创建FutureTask对象// 创建线程try {// 等待任务执行完毕,并且得到返回值前面两种方式都没有返回值,FutureTask可以有返回值。原创 2024-05-28 20:54:21 · 568 阅读 · 0 评论 -
从LiveData迁移到Kotlin的 Flow,才发现是真的香!
如果用户离开应用太久,此时您不想让用户看到陈旧的数据,并且希望显示数据正在加载中,那么就应该在 WhileSubscribed 策略中使用 replayExpirationMillis 参数。然而,如果您需要观察其他的流,就应该使用 WhileSubscribed 来实现细微但又重要的优化工作,参见后文的解答。每当用户实例变化,或者是存储区 (repository) 中用户的数据发生变化时,上面代码中暴露出来的 StateFlow 都会收到相应的更新信息。不过,现在有了一个新的 API。原创 2024-05-28 20:25:05 · 620 阅读 · 0 评论 -
从0开始写一个基于Flutter的开源中国客户端(1)——Flutter简介及开发环境搭建 _ 掘金技术征文
这是Flutter中文网上对于Flutter的介绍:Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面。Flutter可以与现有的代码一起工作。在全世界,Flutter正在被越来越多的开发者和组织使用,并且Flutter是完全免费、开源的。原创 2024-05-28 20:24:34 · 627 阅读 · 0 评论 -
mac下下载安装Android Studio教程
首先来这个下载Android Studio,如果你是mac系统那个下载链接就是Mac。(img-FWx7SfMl-1716897212809)](img-6SQSqdop-1716897212809)]如果你不是mac,或者看不到这个地址,那么可以从这个地址下载。稍微等一下,不晓得再下载嘛东西,下完后看到主界面啦~下载完,拖到Aplications里就完成安装啦。俺选择木有要导入的,直接运行,看到如下进度条。运行会让你选择是否导入之前的设置,如下。安装完成后的图标是这样的。好吧,看下全局的结构~原创 2024-05-28 19:53:44 · 787 阅读 · 0 评论 -
Lifecycle+Retrofit+Room完美结合 领略架构之美
从使用说明分析,UserDao和Db一个是接口,一个是抽象类,这些逻辑的实现完全是由annotationProcessor依赖注入帮我们实现的, annotationProcessor其实就是开源的android-apt的官方替代品。同样基于ORM模式封装的数据库,比较有名还有_GreenDao_。个人理解Retrofit是高度抽象,且和业务耦合度很低的网络库,通过各种数据转化器或适配器,使得网络返回数据可以很奇妙的直接转化为我们想要的类型,与本地数据的缓存及持久化高度无缝对接,大大减少了开发投入。原创 2024-05-28 19:51:23 · 925 阅读 · 0 评论 -
Android系统架构与系统源码目录
在Dalvik下,应用每次运行的时候,字节码都需要通过即时编译器转换为机器码,这会拖慢应用的运行效率,而在ART 环境中,应用在第一次安装的时候,字节码就会预先编译成机器码,使其成为真正的本地应用。硬件抽象层是位于操作系统内核与硬件电路之间的接口层,其目的在于将硬件抽象化,为了保护硬件厂商的知识产权,它隐藏了特定平台的硬件接口细节,为操作系统提供虚拟硬件平台,使其具有硬件无关性,可在多种平台上进行移植。应用层位于整个Android系统的最上层,开发者开发的应用程序以及系统内置的应用程序都是在应用层。原创 2024-05-28 19:16:27 · 779 阅读 · 0 评论 -
Android系统对话框
Code。原创 2024-05-28 19:15:56 · 204 阅读 · 0 评论 -
Android-Service-ANR-的监控机制
由上面的核心代码片段可以看出,最终Service的创建流程会由sys_server进程中的AMS,跨进程调用ApplicationThread,在App进程通过Handler发送消息的形式,执行handleCreateService(),调用Service.onCreate()后,再跨进程通知AMSserviceDoneExecuting()。AMS被调用到了serviceDoneExecuting() 方法后,会调用AS的serviceDoneExecutingLocked()。原创 2024-05-28 18:49:46 · 502 阅读 · 0 评论 -
Android-Framework学习笔记(六)应用程序进程启动过程
i < sz;= 0) {= null) {注释1处创建了字符串列表argsForZygote ,并将启动应用进程的启动参数保存在argsForZygote中,例如uid、gid等,这里需要注意processClass = android.app.ActivityThread,后文会用到。原创 2024-05-28 18:49:15 · 857 阅读 · 0 评论 -
2024预备BAT大厂Android研发岗秋招必问30+道高级面试题(附详细答案解析)
AIDL是使用bind机制来工作。java原生参数Stringparcelablelist & map 元素 需要支持AIDL/***/initView();@OverrideCycleView关键是canvas.drawCycle & paint.setsytle(stoken)原创 2024-05-28 18:21:38 · 514 阅读 · 0 评论 -
2024跳槽必备——Android从初阶到架构师面试复习大纲(含解题思路)
广播接收器没有用户界面。当服务是started状态时,其生命周期与启动它的组件无关,并且可以在后台无限期运行,即使启动服务的组件已经被销毁。Launch桌面的图标第一次启动Activity时,会最终走到ActivityThread的main方法,在main方法里面创建Looper和MessageQueue处理主线程的消息,然后Looper.loop()方法进入死循环,我们的Activity的生命周期都是通过Handler机制处理的,包括 onCreate、onResume等方法,下面是loop方法循环。原创 2024-05-28 18:21:07 · 933 阅读 · 0 评论 -
985本3Android程序员40天拿下阿里P6口头offer,面试成功后整理了这些面试思路(1)
等…原创 2024-05-26 17:41:58 · 412 阅读 · 0 评论 -
android RK3328 gpio处理
执行shell脚本工具类。Command执行结果。原创 2024-05-26 16:03:37 · 271 阅读 · 0 评论 -
Android Retrofit 2
Retrofit 是一个 restful 的 HTTP 网络请求框架的封装。网络请求的工作本质上是 OkHttp 完成,而 Retrofit 仅负责 网络请求接口的封装App应用程序通过 Retrofit 请求网络,实际上是使用 Retrofit 接口层封装请求参数、Header、Url 等信息,之后由 OkHttp 完成后续的请求操作。原创 2024-05-26 16:03:07 · 293 阅读 · 0 评论 -
2024AndroidBATJ面试题设计模式&算法专题总结
23.求1000以内的水仙花数以及40亿以内的水仙花数24.5枚硬币,2正3反如何划分为两堆然后通过翻转让两堆中正面向上的硬8币和反面向上的硬币个数相同25.时针走一圈,时针分针重合几次26.N*N的方格纸,里面有多少个正方形27.x个苹果,一天只能吃一个、两个、或者三个,问多少天可以吃完?#(二)架构设计和设计模式单例模式(Singleton pattern)用于 Runtime,Calendar 和其他的一些类中。工厂模式(Factory pattern)被用于各种不可变的类如 Boolean,像 Bo原创 2024-05-26 00:07:15 · 259 阅读 · 0 评论 -
2024AndroidBAT-字节跳动74道高级面试第二篇
问题来了,当我们第一次GC的时候,我们可以把Eden区的存活对象放到Survivor A空间,但是第二次GC的时候,Survivor A空间的存活对象也需要再次用Copying算法,放到Survivor B空间上,而把刚刚的Survivor A空间和Eden空间清除。所以,GC的时候,其他所有的程序执行处于暂停状态,卡住了。但是,但是,但是,实际中并不是按照上面算法中说的1:1的比例来划分新生代的空间的,而是将新生代划分为一块较大的Eden空间和两块较小的Survivor空间,比例为8:1:1.。原创 2024-05-26 00:06:44 · 331 阅读 · 0 评论 -
Android 横屏启动activity,点击屏幕的单击、双击
【代码】Android 横屏启动activity,点击屏幕的单击、双击。原创 2024-05-25 22:22:55 · 345 阅读 · 0 评论 -
Android 桌面组件【app widget】 进阶项目--心情记录器
通过为Intent 重新设置一个新的任务来打开Activity 此法即可启动一个Activity ,当然这种做法我是不建议的,因为重复了一个动作,具体怎么重复下文会具体告知大家。通过点击布局弹出一个Activity 的操作界面,之后在这个操作界面进行表情的选择和心情的保存,那么如何通过点击打开一个Activity 界面呢?下面是通过点击打开 Activity 操作界面的效果图,在这里有点不好意思啦,因为即兴画的很丑,大家就将就着看吧,主要是理解App widget 的写法。原创 2024-05-25 22:22:24 · 288 阅读 · 0 评论 -
Android Manifest
如果一个元素设置一个标签,但是一个活动和它的意图滤波器没有设置,这个应用程序的标签被当作是这个活动和意图滤波器的标签。例如元素有这三个属性,所以当用户被问及请求的应用程序是否授权,一个表示权限的图标,权限的名称,和一个描述它的细节都会被呈现给用户。对象),这些信息描述了一个请求动作——包括有用的数据,用来执行动作的组件的类别,和其他相关的指令。然而,一些包拥有它自己的库。每一个应用程序被链接到默认的安卓库,这个库包含创建应用程序的基本包(有公共类如:活动,服务,意图,视图,按钮,应用,内容提供者等等)。原创 2024-05-25 21:18:56 · 373 阅读 · 0 评论 -
Android MainActivity与IntentService所属Thread和Process
System.out.println(“UI主线程Id:” + Looper.getMainLooper().getThread().getId());原创 2024-05-25 21:18:25 · 401 阅读 · 0 评论 -
2024年金九银十最新Android面试题必问总结,让你在金九银十找到好工作(附Android面试题答案)_android面试题官2024
找工作难本质上是宏观、中观、微观的一系列因素作用的共同结果。。在这个大环境下,我。:准备面试的小伙伴,一定要根据自身情况制定好复习计划!并且,你最好还要时不时自测一下,对着一些面试常见的问题进行自问。这样查漏补缺,找到自己的问题所在。之后再着实从高频的面试题考试入手,因为高频的面试题被问答的概率远远大于其他面试题,以点入面,把这一个面试题涉及到的所有面试题(面试点)深入详细的搞懂。原创 2024-05-25 20:04:51 · 362 阅读 · 0 评论 -
2024年腾讯丶百度丶字节丶OPPO等Android面试大全,附带教你如何写好简历
这里的总结是在上一步思考的基础之上进行的,并不单单是把自己所学习过的知识点全部罗列出来就可以了。因为每个知识点在学习的过程中看似是独立的,实际上知识点之间大都是有关联的,我们要学会去思考并总结各个有关联的知识点,然后尽自己所能深挖出更多的知识点,使之串联,后面我会利用实际的面试题再来更加清楚的解释这一点。原创 2024-05-25 20:04:20 · 473 阅读 · 0 评论