AsyncTask的用法示例
Kotlin 中 AsyncTask 的使用教程AsyncTask 用于将耗时操作放到后台线程执行,同时在任务开始和结束时在主线程更新 UI。本文将逐步讲解其基本概念、生命周期方法,并提供一个简单的示例代码。 值得注意的是, 从 Android 11 开始,AsyncTask 已被弃用,建议在新项目中使用 Kotlin 协程、WorkManager 或其他异步方案,本文仅做学习记录使用,而且第一行代码P396 10.2.4讲的更详细更好。 1. AsyncTask 的基本概念AsyncTask 使用三个泛型参数来确定任务的输入、进度和结果类型: Params:传递给任务的参数类型。 Progress:任务执行中更新进度时使用的数据类型。 Result:任务执行完毕后返回的结果类型。 例如: 1class MyTask : AsyncTask<Void, Int, String>() { ... } 表示该任务不需要输入参数(Void)、进度为 Int 类型、最终结果为 String。 2. AsyncTask...
infix用法示例
什么是 infix 函数?infix 关键字可以让 单参数的函数 以 更自然的语法 书写,使代码更易读。 你可以把它理解为 一种特殊的调用方式,不需要 . 和 (),让代码像 自然语言 一样流畅。 要使用 infix,需要满足 三个条件: 必须是成员函数或扩展函数(它必须属于某个类或某种类型)。 必须只有且只能有一个参数(如果有多个参数,就不能用 infix)。 ⭐⭐⭐⭐⭐⭐调用时可以省略 . 和 ()(但仍然可以用 . 调用)。 简单示例 1:数字比较不使用 infix1234567fun isBigger(a: Int, b: Int): Boolean { return a > b}fun main() { println(isBigger(10, 5)) // 输出:true} 这个函数 isBigger(10, 5) 可读性一般,我们可以用 infix 改写它。 使用 infix1234567infix fun Int.isBiggerThan(other: Int): Boolean { ...
Glide的基本用法
Glide用法一 Glide用法二 Glide用法三 Glide用法四 Glide用法五 Glide用法六 Glide用法七 Glide用法八
Android Bitmap.createBitmap()用法示例
Android Bitmap.createBitmap() 用法全解析在 Android 开发中,Bitmap.createBitmap() 是一个非常强大的方法,可以用来 创建新的位图,并且可以 进行旋转、缩放、平移、镜像翻转、裁剪等操作。本篇文章将详细介绍 Bitmap.createBitmap() 的各种用法。 1. Bitmap.createBitmap() 基础用法1.1 创建一个空白 Bitmap1val bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888) width:Bitmap 的宽度。 height:Bitmap 的高度。 Bitmap.Config.ARGB_8888:像素格式,支持透明度。 用途:用于创建空白的 Bitmap,然后通过 Canvas 进行绘制。 2. 旋转(Rotate)如果拍照后的图片方向不正确,可以使用 Matrix 进行旋转。 12345fun rotateBitmap(bitmap: Bitmap, degree: Int):...
通知的用法示例
Android 通知(Notification)完全指南记得在测试APP的通知功能时,要在手机上把关于通知的权限打开!!! 1. 通知的作用 用户提示:告知用户重要事件,如新消息、下载进度等。 交互入口:用户点击通知可跳转至应用的特定页面。 持续展示:某些通知需要常驻状态栏,如后台任务提醒。 2. 关键组件 NotificationManager:管理通知的发布、更新、取消。 NotificationCompat.Builder:构建通知,确保兼容低版本 Android。 NotificationChannel(Android 8.0+):管理通知的重要性、声音、震动等。 PendingIntent:设定用户点击通知后的操作。 3. 创建通知3.0 权限在 AndroidManifest.xml 添加权限: 1<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/> 3.1 创建通知频道(Android 8.0+ 必须)1234567891011if...
ContentProvider+ContentResolver+UriMatcher+SQLite的用法示例
1. 引言在 Android 中,数据共享是应用开发中非常重要的一部分。为了在不同应用之间共享数据,Android 提供了 ContentProvider 机制,通过该机制,应用能够访问其他应用的数据或向其他应用提供自己的数据。结合 SQLite 数据库、ContentProvider、ContentResolver 和 UriMatcher,我们可以方便地实现数据的持久化存储、查询、插入、更新和删除操作,同时还能够保证数据访问的安全性。 本文将介绍如何结合 SQLite 数据库、ContentProvider、ContentResolver 和 UriMatcher 实现一个完整的应用数据共享系统,并通过一个具体的示例进行详细说明。 2. 基本概念2.1 SQLite 数据库SQLite 是 Android 中推荐的本地数据库,它是一个轻量级的关系型数据库管理系统。SQLite 可以嵌入到应用中,支持 SQL 查询、数据持久化存储。 优点:开销小、无需服务器,适合单机应用。 缺点:功能相对较简单,适用于小型应用和中小规模的数据存储。 2.2...
RecycleView使用示例
🚀 RecyclerView 进阶优化指南相比之前的版本,这次的改进包括: ✅ 使用 DiffUtil 优化数据更新(避免 notifyDataSetChanged()) ✅ 使用 ViewBinding 简化 ViewHolder 代码 ✅ 封装 Adapter 支持 MutableList(支持增删改查) ✅ 优化 onClick 事件,让 RecyclerView 更易扩展 ✅ 支持 Grid/瀑布流/线性布局 1️⃣ 添加 RecyclerView 依赖确保你的 build.gradle 添加了: 1234dependencies { implementation 'androidx.recyclerview:recyclerview:1.3.2' implementation 'androidx.viewbinding:viewbinding:7.3.1' // 使用 ViewBinding} 2️⃣ 在 activity_main.xml 中添加...
ContentResolver的增删改查方法示例
Android 中 ContentResolver 的增删改查详解ContentResolver 是 Android 提供的 API,用于在不同应用程序之间访问和操作数据,通常与 ContentProvider 一起使用。它提供 增(insert)、删(delete)、改(update)、查(query) 操作,常见于访问系统数据库(如通讯录、媒体库等)或应用自定义的数据库(如日记本、笔记等)。 📌 使用 ContentResolver 的步骤 确定 ContentProvider 提供的数据 URI(content:// 格式) 获取 ContentResolver 对象 执行增、删、改、查操作 处理权限(如果是访问系统数据) 关闭 Cursor 以释放资源(仅 query 需要) 💡 1. 获取 ContentResolver在 Activity 或 Fragment 中: 1val contentResolver = context.contentResolver 在 Service 中: 1val contentResolver =...
SQLite用法
SQLite 是一种轻量级的嵌入式数据库,在 Android 中用于存储结构化数据。你可以通过 SQLiteOpenHelper 来管理数据库的创建、升级、和版本管理。以下是使用 SQLite 的基本步骤: 1. 创建数据库和表使用 SQLiteOpenHelper 创建数据库以及表结构。这个类会帮助你创建数据库、执行表的升级、降级等操作。 创建 SQLiteOpenHelper 类123456789101112131415161718192021222324252627282930import android.content.Contextimport android.database.sqlite.SQLiteDatabaseimport android.database.sqlite.SQLiteOpenHelperclass MyDatabaseHelper(context: Context) : SQLiteOpenHelper(context, DATABASE_NAME, null, DATABASE_VERSION) { companion...
Room+ViewModel+LiveData一起使用的用法
在 Android 开发中,Room、ViewModel 和 LiveData 经常一起使用,以实现 MVVM 架构,并提供持久化数据存储、生命周期感知的数据管理和自动更新 UI 的能力。 📌 1. 主要作用 组件 作用 Room(数据库) 提供 SQLite 的抽象层,管理本地数据存储 ViewModel 管理 UI 相关的数据,确保数据在配置变更(如旋转屏幕)时不会丢失 LiveData 观察数据变化,并在 UI 组件生命周期内自动更新 🚀 2. 使用 Room + ViewModel + LiveData 的完整示例📌 功能:我们实现一个简单的待办事项(ToDo List)应用,可以: 增删查改任务,数据存储在 Room 数据库中。 使用 LiveData 让 UI 自动更新,而不需要手动刷新。 ViewModel 负责管理数据,避免 Activity 直接操作数据库。 📌 3. 创建 Room 数据库(1)定义 Entity(数据库表)123456789import androidx.room.Entityimport...