登录社区云,与社区用户共同成长
邀请您加入社区
Jetpack核心组件的协同开发,本质是通过“标准化组件+规范化流程”解决Android开发的复杂性。其核心价值在于:解耦彻底,各组件职责单一;开发高效,减少模板代码;稳定可靠,框架兜底生命周期和内存问题;可扩展性强,适配多终端、跨平台、AI等未来趋势。新项目直接采用“Navigation 3.X+Hilt+ViewModel+Flow”核心架构,搭配Compose提升开发效率;旧项目迁移采用“渐
其中函数返回值为Unit可以省略 即void类型省略,跟java也是一样的。函数引用的写法感觉比较奇怪,它是函数名前面加两个冒号左边冒号后面的函数类型可以写,也可以省略掉,简写其中等号右侧冒号前面有类名的是类对象的方法引用,在调用的时候也要传对象实例才行:变长参数:kotlin中函数变长参数类型使用vararg修饰这时ints实际上是一个IntArray,可以进行遍历操作等。这个变长参数类型很奇怪
对程序员来说,很多技术的学习都是“防御性”的。也就是说,我们是在为未来学习。我们学习新技术的目的,或是为了在新项目中应用,或仅仅是为了将来的面试。但不管怎样,一定不能“止步不前”,不能荒废掉。!文章以下内容会给出阿里与美团的面试题(答案+解析)、面试题库、Java核心知识点梳理等《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!083716)][外链图片
inline、noinline 和 crossinline 是三个很有用也很好用的关键字,我们在 Kotlin 的官方源码以及各种开源库的源码里也常会见到它们。到现在,它们的含义和使用已经讲完了,过程很复杂,但结论很简单。总结下来就是:用也很好用的关键字,我们在 Kotlin 的官方源码以及各种开源库的源码里也常会见到它们。[外链图片转存中…(img-LV8KWWdj-1725785085662)
在讲解协程的原理之前,我们先来了解一下Continuation和CPS,理解了这两个术语,那么后面对于协程的理解就非常容易了
关于协程的异常处理,一直以来都不是一个简单问题。因为涉及到了很多方面,包括 异常的传递 ,结构化并发下的异常处理 ,异常的传播方式 ,不同的Job 等,所以常常让很多(特别是刚使用协程的,也不乏老手)同学摸不着头脑。...
目前效果图是长这样的 ↓ ,然后包含的功能有选择、裁剪、删除与全屏查看。最近正在学习kotlin,因此我干脆做了两个代码版本的demo,后期如果有时间,会在该功能的基础上再加上一些功能用到的框架:// 图片裁剪 UCropimplementation 'com.github.yalantis:ucrop:2.2.5'// 全屏查看图片 Transfereeimplementation 'com.g
这次的 Flutter 小技巧是字体渲染,虽然是小技巧但是内容略长,可能大家在日常开发中不会特别关心字体相关的部分,而这将是一篇你平时可能用不到 ,但是遇到问题就会翻出来的文章。
父类 张翠山:/**// 注意:⚠️ 必须此类默认是不被其他类继承的,如果想被其他类继承 需要加入 open 修饰// 注意:⚠️ 必须此成员变量默认是不被其他类使用的,如果想被其他类使用 需要加入 open 修饰open var personDescribe:String = “义薄云天,大仁大义 …”/**/**子类 张无忌:测试 的 main方法:// 先打印父类的信息 张翠山// 打印子类
通过重写LinearLayoutManager实现直接使用该LayoutManger即可package com.example.testrecy.testimport android.util.Logimport android.view.Viewimport android.view.ViewGroupimport androidx.recyclerview.widget.RecyclerVie
我见过很多技术leader在面试的时候,遇到处于迷茫期的大龄程序员,比面试官年龄都大。这些人有一些共同特征:可能工作了5、6年,还是每天重复给业务部门写代码,工作内容的重复性比较高,没有什么技术含量的工作。问到这些人的职业规划时,他们也没有太多想法。其实30岁到40岁是一个人职业发展的黄金阶段,一定要在业务范围内的扩张,技术广度和深度提升上有自己的计划,才有助于在职业发展上有持续的发展路径,而不至
众所周知 Kotlin 是比较智能的,比如 smart cast 特性,但是在有些情况下显得很笨拙,并不是那么智能,如下所示。= null &&!) {正如你所见,只有字符串 name 不为空时,才会进入注释 1 的地方,但是以上代码却无法正常编译,如下图所示。编译器会告诉你一个编译错误,经过代码分析只有当字符串 name 不为空时,才会进入注释 1 的地方,但是编译器却无法正常推断出来,真的是编
官方讲解:https://www.kotlincn.net/docs/reference/scope-functions.html函数选择功能对象参考返回值是扩展功能letitLambda结果是runthisLambda结果是run-Lambda结果否:没有上下文对象调用...
郭霖《第一行代码第三版》的Kotlin部分学习笔记(更新中....)
可组合项 `应该没有附带效应`,但是,如果在对应用状态进行转变时需要使用可组合项。此时你应该使用 Effect API , 以便以可以预测的方式来执行这些附带消息
有任何问题,欢迎广大网友一起来交流,分享高阶Android学习视频资料和面试资料包~偷偷说一句:群里高手如云,欢迎大家加群和大佬们一起交流讨论啊!《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!an>?// 为什么可以添加进去呢?因为编译器会这么去存list.add((Man)Man1)// 小转大是隐性的,大转小强转才需要手动加类型。// 那这里为什
给大家送上我成功跳槽复习中所整理的资料,由于文章篇幅有限,所以只是把题目列出来了《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门即可获取!记、源码讲义、实战项目、讲解视频,并且会持续更新!**如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)给大家送上我成功跳槽复习中所整理的资料,由于文章篇幅有限,所以只是把题目列出来了[外链图片转存中…(i
为什么会有协程、什么是协程、部分语言对于协程支持、kotlin协程、suspend关键字介绍和使用。
代码真的是重质不重量,质量高的代码,是当前代码界提倡的,当然写出高质量的代码肯定需要一个相当高的专业素养,这需要在日常的代码书写中逐渐去吸收掌握,谁不是每天都在学习呀,目的还不是为了一个,为实现某个功能写出高质量的代码。所以,长征路还长,大家还是好好地做个务实的程序员吧。最后,小编这里有一系列Android提升学习资料,有兴趣的小伙伴们可以来看下哦~《Android学习笔记总结+移动架构视频+大厂
首先实现我们自己的 Worker 类。我们会在这里实现真正需要在后台执行业务的代码。您可以扩展 Worker 类,并且复写 doWork() 方法。由于这个类非常重要,我们会在后边内容中进行详细介绍。这里是它最初的实现代码。接下来,创建我们的 work 请求,在本例中,我们希望整个操作仅运行一次,所以我们使用 OneTimeWorkRequest.Builder,将需要模糊化处理的图片的 Uri
我们通过一段代码 来了解一下 abstract// 抽象类,不能创建实例// 抽象方法 默认就是open(此处省略) 不能实例,必须继承实现//抽象类中的 方法 不是默认open的,所以需要标明其他地方和 java 的都比较相似,这里就不多赘述。
算法知识点繁多,企业考察的题目千变万化,面对越来越近的“金九银十”,我给大家准备好了一套比较完善的学习方法,希望能帮助大家在有限的时间里尽可能系统快速的恶补算法,通过高效的学习来提高大家面试中算法模块的通过率。这一套学习资料既有文字档也有视频,里面不仅仅有关键知识点的整理,还有案例的算法相关部分的讲解,可以帮助大家更好更全面的进行学习,二者搭配起来学习效果会更好。部分资料展示:有了这套学习资料,坚
这一篇其实是[kotlin-协程与网络请求结果回调浅析](https://blog.csdn.net/star_nwe/article/details/131068951?spm=1001.2014.3001.5501)的延续博客。进入项目组的时候网络请求组件已经搭建好了,后来就一直按项目中的标准写法去使用,自己并没有深入的去解开心中的一些疑问,这篇博客主要是记录解开疑问的过程,以问答的形式展开。
由于时间非常紧急,于是没有用MVP,RxJava2,Retrofit这些都没用.直接用的anko的common库,很方便就可以异步操作和UI线程切换等,为了节约点时间.直接上图吧,哈哈,图来得直接些(本来是gif的,结果不能上传那么大的):说实话,项目中有很多需要优化的地方,但是时间确实有点短,来不及了,很多地方命名不规范,因为我每次想命名需要花很多时间,以前我每一个命名都是仔细思考过的.然后很多
suspend fun getUserSuspend(name: String) = suspendCoroutine { continuation ->githubApi.getUserCallback(name).enqueue(object: Callback{override fun onFailure(call: Call, t: Throwable) =continuation.res
答应大伙的备战金三银四,大厂面试真题来啦!这份资料我从春招开始,就会将各博客、论坛。网站上等优质的Android开发中高级面试题收集起来,然后全网寻找最优的解答方案。每一道面试题都是百分百的大厂面经真题+最优解答。包知识脉络 + 诸多细节。节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。《960全网最全Android开发笔记》《379页Android开发面试宝典》包含了腾讯、百度
感觉现在好多人都在说什么安卓快凉了,工作越来越难找了。又是说什么程序员中年危机啥的,为啥我这年近30的老农根本没有这种感觉,反倒觉得那些贩卖焦虑的都是瞎j8扯谈。当然,职业危机意识确实是要有的,但根本没到那种草木皆兵的地步好吗?Android凉了都是弱者的借口和说辞。虽然 Android 没有前几年火热了,已经过去了会四大组件就能找到高薪职位的时代了。
问题出现;问题排查;反思:IDEA为啥给出这个提示?Kotlin语法:getter总是与属性有着相同的可见性;声明为private,它只会在声明它的文件内可见;Cannot access '': it is private in;kotlin-extension-function-access-java-private-field;
Java中的数组的类型 T[](long[],int[]…}),而在Kotlin中,直接用Array类型表示数组,比如我们构造一个int数组,5个元素,每个元素的初始值为 i*i:val squareArray = Array(5, {i -> i * i})014916Kotlin中对Java中8个基本类型数组用了 新的 xxxArray来定义。(比如 BooleanArray、ByteArra
//javaswitch(a){case 0 : c = 5; break;case 1 : c = 4; break;default : c = 20 ;}//kotlinwhen(a){0 -> c = 51 -> c = 4else -> c = 20}when 多个值相同 可用,间隔 如下所示:when(a){0 , 2 -> c = 51 -> c = 4else -> c = 20}/
lambda.invoke®return r}fun main(args: Array) {sum(1, 2) { println(“Result is: $it”) }}反编译为 Java:public static final int sum(int a, int b, @NotNull Function1 lambda) {//…int r = a + b;lambda.invoke®;re
【2023】Kotlin教程 第四篇 项目实战 第25章项目实战1:开发PetStore宠物商店项目 25.5 任务4:编写表示层代码
各行各样都会淘汰一些能力差的,不仅仅是IT这个行业,所以,不要被程序猿是吃青春饭等等这类话题所吓倒,也不要觉得,找到一份工作,就享受安逸的生活,你在安逸的同时,别人正在奋力的向前跑,这样与别人的差距也就会越来越遥远,加油,希望,我们每一个人,成为更好的自己。BAT大厂面试题、独家面试工具包,资料包括 数据结构、Kotlin、计算机网络、Framework源码、数据结构与算法、小程序、NDK、Flu
写到这里也结束了,在文章最后放上一个小小的福利,以下为小编自己在学习过程中整理出的一个学习思路及方向,从事互联网开发,最主要的是要学好技术,而学习技术是一条慢长而艰苦的道路,不能靠一时激情,也不是熬几天几夜就能学好的,必须养成平时努力学习的习惯,更加需要准确的学习方向达到有效的学习效果。《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
协程作为kotlin 区别于java的新概念,它的出现是为了解决java不好解决的问题,比如层层回调导致代码臃肿,比如 异步任务执行流程不好操控等。本章节篇幅有限,无法展开说明,但是对于新手而言,看完本章应该能对协程的作用有一个大概的认知。本人也是初步研究,后续有更深入的了解之后,再进行专文讲解吧。找工作是个很辛苦的事情,而且一般周期都比较长,有时候既看个人技术,也看运气。第一次找工作,最后的结果
CoroutineScope 会跟踪它使用 launch 或 async 创建的所有协程。您可以随时调用 scope.cancel() 以取消正在进行的工作(即正在运行的协程)。在 Android 中,某些 KTX 库为某些生命周期类提供自己的 CoroutineScope。例如,ViewModel 有 viewModelScope,Lifecycle 有 lifecycleScope。不过,与调
我第一次接触协程是在python的教程里,当时廖雪峰在其中的解释还是不错的,这里拿来用来解释一下:子程序,或者称为函数,在所有语言中都是层级调用,比如A调用B,B在执行过程中又调用了C,C执行完毕返回,B执行完毕返回,最后是A执行完毕。所以子程序调用是通过栈实现的,一个线程就是执行一个子程序。子程序调用总是一个入口,一次返回,调用顺序是明确的。而协程的调用和子程序不同。协程看上去也是子程序,但执行
1.inline的作用1.1 可以将函数体直接复制到函数调用处package com.example.kotlinsyntax._inlineclass InlineClass {//inline标记的函数inline fun doInline() {print("inline")}//普通函数fun doNoInline() {print("noInline")}//调用处函数fun test
综述在上面文章聊一聊Kotlin扩展函数run,with,let,also和apply的使用和区别中讲解Kotlin的几个扩展函数的使用和区别。那么在这篇文章中去自己定义一些扩展函数来更加优雅的去将添加Fragment到Activity中。回顾Fragment使用在使用Kotlin之前,首先回顾一下在Java中是如何添加一个Fragment到Activity当中的。Fragmen...
写到这里也结束了,在文章最后放上一个小小的福利,以下为小编自己在学习过程中整理出的一个学习思路及方向,从事互联网开发,最主要的是要学好技术,而学习技术是一条慢长而艰苦的道路,不能靠一时激情,也不是熬几天几夜就能学好的,必须养成平时努力学习的习惯,更加需要准确的学习方向达到有效的学习效果。《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!我们定义的 dig
由于getMessage是一个耗时操作,所以我们将他放在子线程中,而在Android中 UI更新操作不能放在子线程中,所以我们必须将showMessage方法放在UI线程中,在之前我们实现这种需求 只能自己去执行切线程的代码,代码如下所示/***/private fun getMessageFromNetwork() {for (i in 0…1000000) {//这里模拟一个耗时操作}var
找到一套好的视频资料,紧跟大牛梳理好的知识框架进行学习。多练。(视频优势是互动感强,容易集中注意力)你不需要是天才,也不需要具备强悍的天赋,只要做到这两点,短期内成功的概率是非常高的。对于很多初中级Android工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。
引言自从Google I/O 大会上宣布 Kotlin 成为 Android 开发的官方语言,Kotlin 就吸引了很多人的目光,笔者也收集了一些资料,整理成这篇博客来简单介绍下Kotlin。Kotlin的起源:Kotlin是一个基于JVM的新的编程语言,由JetBrains开发。JetBrains,作为目前广受欢迎的Java IDE IntelliJ的提供商,在Apache许可下已经开源其K
但是kotlin没有,所以kotlin 用的是 if() … else …这样实现三元表达式其他的if用法和Java无异3.2 when表达式和Java中的是类似的。因为kotlin是极简风格变成,所以它的when比switch写起来更加方便,下面一个例子:fun caseWhen(obj: Any?) {when (obj) {0, 1, 2, 3 -> print(“是0123中的一个”)“你
首先是一个知识清单:(对于现在的Android及移动互联网来说,我们需要掌握的技术)泛型原理丶反射原理丶Java虚拟机原理丶线程池原理丶注解原理丶注解原理丶序列化Activity知识体系(Activity的生命周期丶Activity的任务栈丶Activity的启动模式丶View源码丶Fragment内核相关丶service原理等)代码框架结构优化(数据结构丶排序算法丶设计模式)APP性能优化(用户
写到这里也结束了,在文章最后放上一个小小的福利,以下为小编自己在学习过程中整理出的一个学习思路及方向,从事互联网开发,最主要的是要学好技术,而学习技术是一条慢长而艰苦的道路,不能靠一时激情,也不是熬几天几夜就能学好的,必须养成平时努力学习的习惯,更加需要准确的学习方向达到有效的学习效果。《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!中…(img
println(“nowTime[nowTime [nowTime[{Thread.currentThread().name}] ${msg.joinToString(” “)}”)}/***/internal typealias ProgressBlock = (state: DownloadState) -> Unit/***/sealed class DownloadState {/***/
一些Android代码经验分享
kotlin
——kotlin
联系我们(工作时间:8:30-22:00)
400-660-0108 kefu@csdn.net