avatar
文章
108
标签
35
分类
15
首页
归档
标签
分类
友链
关于
Fleming's Blog
搜索
首页
归档
标签
分类
友链
关于

Fleming's Blog

Kotlin语法糖
发表于2022-02-08|Code
Kotlin语法糖Kotlin 是一种现代编程语言,它引入了许多语法糖和特性,旨在提高代码的简洁性和可读性。以下是一些 Kotlin 中常用的语法糖和特性: 1. 数据类(Data Classes)Kotlin 的数据类自动生成常见的方法,如 equals(), hashCode(), toString(), copy() 等。 1data class User(val name: String, val age: Int) 2. 属性委托(Property Delegates)属性委托允许你将属性的 getter 和 setter 代理给另一个对象。 12345class User { var name: String by Delegates.observable("John Doe") { prop, old, new -> println("$old -> $new") }} 3. 智能转换(Smart Casts)Kotlin 的智能转换允许你在类型...
ip定位
发表于2022-02-08|经验
1、自有搭建IP 定位框架 GeoIP2 for Java:https://blog.csdn.net/GodSuzzZ/article/details/108095385官网:https://www.maxmind.com/en/geoip2-services-and-databasespy:https://pypi.org/project/geoip2/#description 2、免费转接寻找免费获取ip信息站点经过我们自己服务转一下https://ipapi.co/218.104.82.74/json 3、付费接口https://timezoneapi.io/api/ip/?token=aeLjNqtdVzUgQeiYumTC
图片下载及保存
发表于2022-02-08|Code
图片下载及保存 确定文件的下载路径,context.getExternalFilesDir(“images”),即app外部存储的files路径,无须动态权限声明 创建URL对象,val url = URL(path),由图片的下载地址创建 通过url.openConnection()打开连接,获取连接对象 连接conn.connect() 获取输入流,val input: InputStream = conn.getInputStream() 创建输出流,准备写入val fos = FileOutputStream(out) 标准io操作,将读到的字节写入到文件中 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253try { val buf = ByteArray(1024) var numRead: Int fos.run { while ((inpu...
国内镜像地址
发表于2022-02-08|Code
国内镜像地址1234567891011121314151617181920buildscript { repositories { maven { url 'https://mirrors.huaweicloud.com/repository/maven/' } maven { url 'https://maven.aliyun.com/repository/public/' } }}allprojects{ repositories { maven { url 'https://mirrors.huaweicloud.com/repository/maven/' } maven { url 'https://maven.aliyun.com/repository/public/' } }}
Retrofit面试问题
发表于2022-02-08|经验
Retrofit面试问题介绍下Retrofit框架,Retrofit为什么要包装okhttp呢? Retrofit 是一个类型安全的HTTP客户端,用于Android和Java应用。它允许你通过定义接口来描述HTTP请求,包括URL、请求方法(GET, POST等)、请求头以及请求体等内容。 Retrofit 包装了 OkHttp 主要是为了提供更高级别的抽象,简化网络请求的配置与执行。OkHttp 是一个高效的HTTP客户端,而 Retrofit 在其基础上提供了对REST API更加友好的支持,如动态代理、注解配置请求、数据转换等。 Retrofit主要实现机制?Retrofit的作用、原理 Retrofit 的核心是使用动态代理来创建接口的实现类,将HTTP请求的方法调用转化为实际的网络请求。它的作用是让开发者以一种声明式的方式来定义网络请求,并且可以很容易地进行扩展和修改。 底层是如何用 OkHttp 请求的? 在底层,Retrofit 使用 OkHttp 发送网络请求。当你构建了一个 Retrofit 实例时,你可以为其指定一个 OkHttpClient 对象,这样...
core-ktx及appcompat是什么
发表于2022-02-08|经验
core-ktx及appcompat是什么core-ktx是Android官方发布的一个Kotlin扩展库,主要提供了对Android原生API的Kotlin语言扩展和优化。 core-ktx的主要作用包括: 为Android原生API提供了惯用的Kotlin语法扩展,使代码更简洁。比如View.show()隐藏了findViewById。 提供了一些Kotlin特有的语言功能来优化Android API,如空安全、高阶函数等。 加入了一些Kotlin协程相关的扩展,可以更方便地使用协程。 提供了部分标准库函数的扩展,如集合相关的扩展函数。 简化了资源访问,避免重复代码。 支持了一些Kotlin版本更新带来的新特性。 向下兼容旧版本Android API。 总之,使用core-ktx可以写出更优雅简洁的Android代码,提高开发效率。它降低了从Java转换到Kotlin的学习成本,是一个非常值得引入的库。主流的Android项目基本上都会依赖该扩展库。 appcompat是AndroidX中的一个重要支持库,它主要提供了向后兼容旧版Android系统的功能。...
VideoView视频播放
发表于2021-12-16|Code
VideoView视频播放123456789101112131415val videoView = findViewById<VideoView>(R.id.videoView)val videoUri = Uri.parse("android.resource://$packageName/${R.raw.my_video}")videoView.setVideoURI(videoUri)// 添加播放控制val mediaController = MediaController(this)videoView.mediaController = mediaControllermediaController.setAnchorView(videoView)// 循环播放videoView.setOnCompletionListener { videoView.start()}videoView.start()
创建前台服务通知
发表于2021-11-28|Code
创建前台服务通知ANR(Application Not Responding) 错误,是 Android 系统中一个典型的 前台服务启动违规 问题。具体错误信息如下: 12Reason: Context.startForegroundService() did not then call Service.startForeground(): ServiceRecord{... com.hansong.orion.sipclient/.service.SipAidlService} 🔍 问题原因从 Android 8.0(API 级别 26)开始,Google 对 前台服务(Foreground Service) 的使用做了严格限制: 如果你通过 Context.startForegroundService() 启动一个服务, 那么该服务 必须在 5 秒内 调用 startForeground(int id, Notification notification), 否则系统会抛出 ANR,并可能杀死你的应用。 你的 SipAidlService 被通过...
列表匹配
发表于2021-11-21|Code
列表匹配12345calendarEvent?.userList?.let { list -> // 先转成map,时间复杂度从 O(n×m) 降到 O(n + m),性能更好 val relatedUserMap = users.associateBy { it.uid } mAdapter.setNewInstance(list.mapNotNull { relatedUserMap[it.uid] }.toMutableList())}
监听网络连接状态
发表于2021-02-08|Code
监听网络连接状态 通过注册网络回调 (NetworkCallback),可以动态监控 Wi-Fi 的连接状态。 1234567891011121314151617181920val connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManagerval networkCallback = object : ConnectivityManager.NetworkCallback() { override fun onAvailable(network: Network) { val networkCapabilities = connectivityManager.getNetworkCapabilities(network) if (networkCapabilities?.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) == true) ...
1…456…11
avatar
Fleming Chen
不积跬步无以至千里,不积小流无以成江海。——《荀子·劝学》
文章
108
标签
35
分类
15
Follow Me
公告
欢迎来到我的博客,有任何疑问可以随时联系我交流讨论!
最新文章
AI编程工具全景对比2026-06-05
PJSIP Android 原生库与 Java 绑定编译指南2026-05-14
AI提示词生成技巧2026-05-06
交叉编译的含义2026-04-14
adb性能分析2026-04-08
分类
  • ADB12
  • Code19
  • Flutter1
  • Git10
  • Grep1
  • Linux5
  • React1
  • Repo2
标签
MVP sip Message 音频 EditText AlertDialog SQLite adb Markdown 学习路线 git unity 日常 系统 AsyncTask LruCache 开发工具 IDE 自学 Android 代码 扩展 缓存 Handler linux Dialog 系统广播 架构 UI flutter 数据库 react BroadcastReceiver Android Studio 经验
归档
  • 六月 2026 1
  • 五月 2026 2
  • 四月 2026 3
  • 二月 2026 2
  • 一月 2026 2
  • 八月 2025 3
  • 七月 2025 5
  • 六月 2025 1
网站信息
文章数目 :
108
本站访客数 :
本站总浏览量 :
最后更新时间 :
© 2016 - 2026 By Fleming Chen框架 Hexo 6.1.0|主题 Butterfly 5.5.4
搜索
数据加载中