
Android 开发实战大全
文章平均质量分 67
记录Android开发过程中遇到的问题及解决方案。逐步涨价!
优惠券已抵扣
余额抵扣
还需支付
¥89.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
积跬步DEV
一枚开发工程师!
展开
-
Android 绘制折线图
用了一段的 Jetpack Compose ,感觉写 UI 的效率确实会提升不少。原创 2025-05-20 10:25:59 · 91 阅读 · 0 评论 -
iPhone 和 Android 在日期格式方面的区别
我们传递和储存时间一律使用时间戳。在 JS 中可以使用 date.toISOString();// 输出标准的 ISO 8601 时间格式不同时区转换可以通过设置timeZone来实现。原创 2025-05-07 14:23:57 · 391 阅读 · 0 评论 -
Android 手动删除 AAR jar 包 中的文件
A.aar B.aar 有类冲突;使用 exclude 排除本地aar无效;所以要删除其中一个aar中导致冲突的包或类;直接解压aar然后再解压jar,删除冲突的类后 ,再使用指令打包jar和aar;一定要使用指令打包jar和aar,zip改后缀成aar或jar是不可以的;原创 2025-04-29 11:30:36 · 187 阅读 · 0 评论 -
RxJava compose 操作符使用
复用线程调度链,减少重复代码。原创 2025-04-22 16:12:16 · 47 阅读 · 0 评论 -
RSA + AES 混合加密通信
RSA + AES 的组合方案是一种经典的“混合加密”方案,它结合了非对称加密的安全性和对称加密的高效性,解决了密钥分发和大量数据加密的难题。单独使用 AES(对称加密)或 RSA(非对称加密)都存在一定的安全隐患,因此,结合 RSA 和 AES 的混合加密方式成为一种常见的安全解决方案。它采用分组加密的方式,将数据分成固定长度的块,然后使用密钥对每个块进行加密。通过这种组合,我们既能享受 AES 的高效加密能力,又能利用 RSA 解决密钥分发的安全问题,真正实现了。,适用于大多数的安全通信场景。原创 2025-04-22 14:20:53 · 157 阅读 · 0 评论 -
监听Android 的Activity 生命周期
在 Application 中的 onCreat 注册一下。原创 2025-04-18 11:05:23 · 102 阅读 · 0 评论 -
Android LiveData 的 `setValue` 与 `postValue` 区别详解
LiveData 默认保存最后一次值,新注册的观察者会立即收到该值。在短时间内多次调用时,中间值可能被覆盖,仅最后一次生效;:如动画进度更新,需确保每个状态都被观察者接收。每次调用均会触发更新,无数据丢失风险。:如网络请求、数据库查询完成后更新数据。锁保证线程安全,仅第一次调用会提交。:如传感器数据,只需显示最新状态。方法,遍历观察者列表触发回调。:如点击按钮后直接刷新 UI。,立即触发所有活跃观察者的。在主线程队列中延迟执行)。• 避免在子线程频繁调用。,可能导致主线程任务堆积。,但主线程执行前多次。原创 2025-03-23 23:41:38 · 226 阅读 · 0 评论 -
Android一个APP里面最少有几个线程
Android应用启动时,默认会创建一个进程,该进程中最少包含负责处理用户交互、UI更新等核心操作,所有与界面相关的逻辑必须在此线程执行。若在此线程执行耗时操作(如网络请求),会导致界面卡顿甚至触发ANR(应用无响应)。当对象重写了finalize()方法时,该线程负责将这些对象放入队列并调用其finalize()方法,完成资源释放后再由GC回收。监控的执行效率。如果finalize()方法执行超时(默认10秒),此线程会触发虚拟机退出以防止应用长时间阻塞。原创 2025-03-23 21:19:40 · 390 阅读 · 0 评论 -
Jetpack Compose — 入门实践
仔细想一下,这样的设计是否更合理,Button 本身的作用就是提供点击时间,Text 提供文本作用的。视图树一旦生成便不可随意改变,视图树的刷新依靠 Composable 函数的反复执行来实现,当需要显示的数据发生变化时,Composable 基于新的参数再次执行,更新底层的视图树。这种多数据源在状态变化的情况下不容易跟踪,且状态源过度分散,会增加状态同步的工作量,比如 EditText 内部持有一个 mText 状态,其它组件需要监听它的状态变化,同时,它还有可能需要监听其它组件的状态变化。原创 2025-03-07 18:36:01 · 233 阅读 · 0 评论 -
Compose 文本设置表格
默认是1.dp 的,还可以针对不同单元格设置border。原创 2025-03-04 11:38:15 · 34 阅读 · 0 评论 -
Android 字体大小自动处理 AppCompactTextView 和 自定义 TextView
TextView属性背后容易出现绘制冲突,动态设置参数以最后的配置为准,会影响之前配置好的布局,产生问题;对于支持API 26以上的 autoSizeTextType 属性,更容易产生布局冲突,导致onDraw结束后所表现的状态出现异常;采用自定义View并重写绘制流程的方法较为稳定,且不会因为多次重建导致问题。原创 2025-02-25 13:36:03 · 146 阅读 · 0 评论 -
Activity 如何设置进出场动画
要在启动时设置动画(从下到上出现,关闭时从上到下退出),你可以使用方法来控制进出动画。原创 2025-01-22 11:50:00 · 169 阅读 · 0 评论 -
Compose 最佳实践
Compose业务上能做的优化大体上就是这些了。总之我们就是我们要保持组件的颗粒度尽可能的小,容易变动的要独立出来,非常稳定的也要独立出来,尽量使用Immutable的数据结构。如此之后,Compose的流畅度还是非常不错的。如果还觉得卡,那多半是因为你使用的是Debug包,Compose会在Debug包加很多调试信息,会很影响其流畅度的。切换到Release包,可能丝滑感就出来了。针对最后这一段,目前我是没有发现 Debug 卡顿情况。原创 2025-01-17 14:12:10 · 43 阅读 · 0 评论 -
Android TextView 添加下划线的几种方式
设置为相应的的值,如果是所有的类型都出来就是**android:autoLink="all",方法格式化要放到TextView里的文字 ,与第1种一样,只是是用代码动态设置。当文字中出现URL、E-mail、电话号码等的时候,可以将TextView的。直接让TextView引用字符串资源的name即可。用Spannable或实现它的类,如。将要处理的文字写到一个资源文件,注⚠️: 这种方式真的简单方便!原创 2025-01-09 11:17:11 · 999 阅读 · 0 评论 -
Android TextView 添加图标并实现换行
【代码】Android TextView 添加图标并实现换行。原创 2024-12-25 19:37:07 · 235 阅读 · 0 评论 -
如何使用 viewModelScope.launch
是一个非常常用的写法,它帮助在ViewModel中启动协程,执行异步任务,并确保在ViewModel销毁时取消协程,防止内存泄漏。在 Android 应用中,常用于执行网络请求、数据库操作等需要异步处理的任务。是的,中的代码可以使用来简化异常处理。是 Kotlin 标准库提供的一个函数,它用于捕获代码块中的异常,并以Result对象的形式返回。这样可以避免显式使用try-catch,使代码更加简洁。你完全可以将中的网络请求部分改造成,这样可以更优雅地处理异常并简化代码。原创 2024-12-05 17:22:59 · 401 阅读 · 0 评论 -
对比 LiveData 和 Flow 的实现方式
前一段忙完了鸿蒙,现在又开始 Android 开发了。由于之前公司都是都是偏传统开发方式,基本都是 Java 开发 Android 那一套。现在开始学习现代 Android 开发了。原创 2024-12-05 16:39:45 · 500 阅读 · 0 评论 -
如何通过 ADB 安装 xapk
这个方式通过adb install-multiple命令直接一键安装了,这个确实方便,亲测也能成功安装,但似乎只支持已签名的包,暂未验证(常见的应用应该都有签名的吧)。xapk和apks并无本质不同,都是压缩包,但xapk是apkpure魔改版的,通过manifest.json来记录安装配置,查看其内容如下图。一开始用这个命令发现不行, adb install -r *.apk 后开看到有 install-multiple ,安装成功!这位大佬的方式步骤较为繁琐,不过兼容性应该较好,亲测成功安装。原创 2024-11-29 17:49:43 · 1115 阅读 · 0 评论 -
Android 老项目适配 Compose 混合开发
在compose中,每个可组合函数调用直至渲染完成,称之为重组通过异步上树虽然带来了性能的提升,但是管理方面变得困难,所以compose规定,每个可组合函数都是独立运行的存在,可组合函数内部应该仅处理的UI操作,重组的发生的时机并不由我们控制,而是由compose内部自动管理,后续我们可以使用状态来通知compose进行重组。如需更多了解,下面文章看下的文章,看完一遍就基本了解,然后直接就是实战。原创 2024-11-12 10:44:41 · 437 阅读 · 0 评论 -
Android xml 中设置水平虚线及竖直虚线
【代码】Android xml 中设置水平虚线及竖直虚线。原创 2024-01-18 12:50:56 · 792 阅读 · 0 评论 -
Glide 设置图片圆角和 scaleType 冲突
android:scaleType=“fitStart”:等比缩放,直到一边充满,另一边小于等于边界,较小一边与ImageView头部对齐。android:scaleType=“fitEnd”:等比缩放,直到一边充满,另一边小于等于边界,较小一边与ImageView尾部对齐。等比缩放,直到一边充满ImageView,另一边大于等于ImageView边界,超出ImageView的那一边被居中裁剪。7.android:scaleType=“fitXY”:不等比缩放,拉伸并缩放图片,直到完全填充。原创 2023-07-24 19:50:40 · 1310 阅读 · 0 评论 -
Android学习 ——Android中如何使用WIFI来连接ADB
有的时候,我们限于种种原因,无法使用USB来连接设备进行调试,此时,可以通过Wifi连接来进行。首先打开手机的wifi设置,使其连接到网络。然后,需要在手机上对adb连接端口进行设置,这里需要有root权限的终端(terminal)应用,这种类型的应用在各个Market都有不少,选择一个适合的就可以了。本文所使用的为超级终端专业版Better Terminal。然后,在手机中打开这原创 2012-03-31 11:25:48 · 1758 阅读 · 0 评论 -
Android学习——Android 系统中的UID、GID、GIDS与PID
Android 系统中的UID、GID、GIDS与PID 在 Android 上,一个用户 UID 标示一个应用程序。应用程序在安装时被分配用户 UID,应用程序在设备上的存续期间内,用户 UID 保持不变。对于普通的应用程序,GID即等于UID。 GIDS 是由框架在 Application 安装过程中生成,与 Application 申请的具体权限相原创 2017-03-02 17:30:17 · 7576 阅读 · 0 评论 -
Android快速开发教程备忘录
Android DataBinding 从入门到进阶https://www.jianshu.com/p/bd9016418af2原创 2020-11-11 22:26:49 · 489 阅读 · 0 评论 -
android学习——android项目的的目录结构
然后我们看一下Helloword的程序目录: 我们可以看到 大致有的文件: 1. MainHelloWorld.java文件 2. R.java文件 3. android.jar文件 4. RES、Layout、main.xml文件 5. androidmainfest.xml文件 还有目录大致有原创 2012-05-02 10:04:32 · 1175 阅读 · 0 评论 -
Android学习——命名规范
Use common naming conventions for icon assetsTry to name files so that related assets will group together inside a directory when they are sorted alphabetically. In particular, it helps to use a c原创 2013-12-24 11:48:06 · 1298 阅读 · 0 评论 -
Android学习——Android试题
1,谈谈你对Activity的理解?对于这种“你对什么什么怎么理解”的面试题,最好的回到方式就是用你自己的理解说出来,通俗中夹杂些专业术语,偶尔再蹦出几个英文。当然如果你很牛X,你可以往深了说,只要别漫无目的的说就行。围绕一条主线。这其中如果你对某一方面比较精通,你就应该往你精通的方向引。面试官可能就会顺着你的思路走了。不过现在有很多面试问Android方面的知识不多,问java方面的比较转载 2013-10-18 10:01:36 · 1423 阅读 · 0 评论 -
Dalvik VM (DVM) 与Java VM (JVM)的区别
Dalvik虚拟机是Google等厂商合作开发的Android移动设备平台的核心组成部分之一。它可以支持已转换为.dex(即Dalvik Executable)格式的Java应用程序的运行,.dex格式是专为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统。(dx 是一套工具,可以将 Java .class 转换成 .dex 格式. 一个dex档通常会有多个.class。由于dex有...转载 2018-06-07 13:22:07 · 405 阅读 · 0 评论 -
Anroid——Android Service 学习
Android开发的过程中,每次调用startService(Intent)的时候,都会调用该Service对象的onStartCommand(Intent,int,int)方法,然后在onStartCommand方法中做一些处理。我们注意到这个函数有一个int的返回值,那就来简单地讲讲int返回值的作用。从Android官方文档中,我们知道onStartComma原创 2014-03-04 10:38:09 · 861 阅读 · 0 评论 -
adb操作命令详解及大全
adb是什么?:adb的全称为Android Debug Bridge,就是起到调试桥的作用。通过adb我们可以在Eclipse中方面通过DDMS来调试Android程序,说白了就是debug工具。adb的工作方式比较特殊,采用监听Socket TCP 5554等端口的方式让ID原创 2011-10-11 19:07:48 · 322354 阅读 · 8 评论 -
Android 和php 短接base64 乱码问题
@猪一样的队友 Android 端 base64 之后 的url 到php 端 乱码 解决 方法 var_dump(base64_decode(str_replace(" ","+",urldecode($a))));原创 2015-07-20 10:47:14 · 2536 阅读 · 0 评论 -
Android 查看依赖的方法,妈妈再也不用担心jar包冲突找不到了
前言我们开发过程中,难免会遇到这样的情况:在github等网站上找到了几个不错的项目,高高兴兴的compile过来,然后:UNEXPECTED TOP-LEVEL EXCEPTION:com.android.dx.util.DexException: Multiple dex files define ………………………………1234正文遇到这种问题,我们看错误信息只能知道有jar包冲突,是...转载 2018-06-06 14:55:16 · 5480 阅读 · 1 评论 -
SharedPreferences 存储对象
public static String oToBase64String(Object o) throws Exception { // 创建字节输出流 ByteArrayOutputStream baos = new ByteArrayOutputStream(); // 创建对象输出流,并封装字节流 ObjectOutputStream oos = new ObjectOutp原创 2015-07-09 15:17:44 · 928 阅读 · 0 评论 -
Android学习—— Handler 的消息发送,在新的线程处理消息
1 Handler基本概念: Handler主要用于异步消息的处理:当发出一个消息之后,首先进入一个消息队列,发送消息的函数即刻返回,而另外一个部分逐个的在消息队列中将消息取出,然后对消息进行出来,就是发送消息和接收消息不是同步的处理。 这种机制通常用来处理相对耗时比较长的操作。2.在新线程处理 Handler handler =new Handler();原创 2011-11-27 14:03:14 · 6544 阅读 · 0 评论 -
android学习——DatePicker 和 TimePicker
public class HelloDatePicker extends Activity { private static final int DATE_PICKER_ID = 0; private static final int TIME_PICKER_ID = 1;原创 2011-10-18 16:02:04 · 1838 阅读 · 0 评论 -
android学习——ExpandableListView控件
ExpandableListView 可扩展的ListViewxmlmain.xml<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent"原创 2011-10-19 22:08:35 · 958 阅读 · 0 评论 -
Android学习——图片异步加载工具类 用到了SoftReference
来源与网络,具体地址忘记了,写篇博客记录下 ,方便自己以后使用 。 谢谢原作者 。public class AsyncImageLoader { public Map> imageCache = new HashMap>(); // 固定五个线程来执行任务 private ExecutorService executorService = Executors.newFixed原创 2012-06-19 15:45:59 · 3032 阅读 · 1 评论 -
Gradle 使用
Cannot call getBootClasspath() before setTargetInfo() is called.classpath 'com.android.tools.build:gradle:1.1.0'修改classpath 'com.android.tools.build:gradle:1.1.2'原创 2015-04-18 16:43:43 · 3934 阅读 · 0 评论 -
Android学习-ScrollView LinearLayout View
ScrollView 套 LinearLayout 包含 View 死活报错。 删除View 就好。原创 2016-09-12 14:08:01 · 692 阅读 · 0 评论 -
gradle 排除本地项目 部分依赖
(2015-12-04 17:27:17)转载▼ 分类: android gradle 排除部分依赖坐标:以前都是以为只有 用坐标依赖时,才能使用 exclude 类似compile ('com.ali.reactandroid:react_android:0.8.0-SNAPSHOT'){transitive = trueexclude group: '...原创 2018-12-25 11:12:29 · 1656 阅读 · 0 评论