APP开发常识
文章平均质量分 82
Android APP开发常识:掌握Java或Kotlin语言,熟悉Android Studio开发环境。了解Activity生命周期,布局设计,以及Android框架体系。注重用户体验,适配不同设备,确保应用稳定安全。考虑网络连接与多语言支持,利用插件化、组件化技术提升开发效率。定期测试,优化性能
望佑
掘金:https://juejin.cn/user/2796746683196333
展开
-
Android Bitmap加载问题
是Android系统中用于设置图片解码时参数的类,通过配置这个类的属性,可以控制图片的加载方式、颜色配置、是否复用已有Bitmap等多种行为。以下是一个完整的代码示例,该示例展示了如何根据ImageView的目标大小来加载并调整SD卡上图片的大小,然后将其显示在ImageView中。为true的方式解码图片,仅获取其宽高信息,然后根据目标尺寸计算出一个合适的。值,最后使用这个值重新解码图片,得到缩放后的Bitmap对象。类本身并不直接提供方法,它的作用主要是通过设置其属性来影响。的decode方法的行为。原创 2024-09-25 20:47:11 · 787 阅读 · 0 评论 -
Android应用程序启动与资源加载
在Android系统中,AMS(Activity Manager Service)扮演着核心角色,负责管理应用程序的生命周期和进程调度,包括启动应用进程等关键操作。下面将详细解析AMS启动应用进程时涉及的第一个线程、代码和资源的加载过程,以及R.id.xx的加载机制。原创 2024-09-25 17:55:13 · 881 阅读 · 0 评论 -
Android常见三种设计架构
(注意:MVVM在Android中通常与数据绑定库如Data Binding或第三方库如LiveData, ViewModel等结合使用):复杂UI逻辑和大量业务逻辑的应用,需提高可测试性和可维护性。:数据驱动的应用,如响应式UI,双向数据绑定等。:简单的应用,视图和控制器职责明确。原创 2024-09-24 23:11:15 · 847 阅读 · 0 评论 -
Android代码调试与调优指南
通过深入理解Android架构和性能瓶颈、掌握高级调试技术、实施有效的代码优化策略、针对OOM和ANR进行深入排查与调优、实践CI/CD流程、优化版本控制与配置管理以及加强安全与隐私保护等措施,开发者可以显著提升Android应用的稳定性和性能表现。在Android应用开发中,代码调试与调优不仅是确保应用稳定运行、提升用户体验的必要环节,也是开发者专业技能的重要体现。随着Android系统版本的更新和硬件设备的多样化,开发者需要掌握更加全面和深入的调试与优化技术。原创 2024-09-24 22:56:03 · 1183 阅读 · 0 评论 -
Android内存优化
在Android中,内存泄漏通常发生在长生命周期对象(如Activity、Fragment等)持有短生命周期对象(如Context、View等)的强引用时。然而,每个VM的内存大小是有限的,因此内存优化成为应用开发中的重要环节。弱引用是一种不会阻止其引用的对象被垃圾回收器回收的引用类型。在Android开发中,弱引用常用于解决由长生命周期对象持有短生命周期对象的强引用所导致的内存泄漏问题。总之,弱引用是解决Android内存泄漏的有效工具之一,但使用时需要谨慎,并确保理解其工作原理。原创 2024-09-24 22:49:17 · 665 阅读 · 0 评论 -
Android性能优化与调优深度解析
Android性能优化不仅是技术层面的挑战,更是对用户体验和产品质量的直接体现。随着智能手机功能的日益强大和用户对应用性能要求的不断提高,如何使Android应用在多样化的硬件环境中保持高效、稳定、流畅运行,成为了开发者必须面对的重要课题。Android性能优化是一个涵盖广泛领域的综合工程,包括但不限于内存管理、布局优化、数据加载、启动速度等多个维度,其核心目标是在确保应用功能完整性的基础上,提升应用的响应速度、降低资源消耗、减少卡顿和崩溃现象,从而为用户提供更为优质的使用体验。原创 2024-09-24 22:44:35 · 542 阅读 · 0 评论 -
Android内存泄漏三:对比内存溢出
内存泄漏是指程序中已动态分配的堆内存由于某种原因未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。其特征是程序使用内存总量持续增加,直到程序崩溃或者系统强制关闭。原创 2024-09-24 22:38:11 · 274 阅读 · 0 评论 -
Android 内存泄漏二:View.post
方法在 Android 开发中经常用于在 UI 线程上执行代码,尤其是当需要在某个视图的绘制或布局操作完成后立即执行某些操作时。这个方法确实与内存泄漏的潜在风险有关,但主要是基于其如何被使用,而不是方法本身直接导致的。原创 2024-09-24 22:35:39 · 683 阅读 · 0 评论 -
Android 内存泄漏一:Handler
在Android开发中,Handler的内存泄漏是一个常见问题,尤其是当它与Activity、Fragment或其他具有生命周期的组件一起使用时。Handler内存泄漏的主要原因是它可能会持有对其外部类的隐式引用,通常是因为它在内部类中创建,而这个内部类又持有其外部类的引用。原创 2024-09-24 22:29:20 · 831 阅读 · 0 评论 -
Android Crash
*** 当给定线程由于给定的未捕获异常而终止时调用此方法。* Java 虚拟机将忽略此方法引发的任何异常。* @param t 导致异常的线程* @param e 未捕获的异常*/原创 2024-09-24 22:23:39 · 1047 阅读 · 0 评论 -
Android ANR
ANR是指应用程序在特定时间内未能对用户的输入或系统事件作出有效响应。Android系统通过ActivityManagerService(AMS)和WindowManagerService(WMS)等系统服务来监控应用程序的响应时间,一旦超过预设的时间阈值,就会触发ANR。原创 2024-09-24 22:22:40 · 964 阅读 · 0 评论 -
Android HelloHarmony项目入门
OpenHarmony应用项目遵循模块化的架构设计原则,其中各个模块负责不同的功能和职责。这样的基础项目,虽然结构相对简单,但同样遵循模块化设计,确保代码的可维护性和可扩展性。原创 2024-09-21 17:14:37 · 458 阅读 · 0 评论 -
Android性能分析工具:Profiler
准备开发环境连接设备或配置模拟器加载并运行项目启动Profiler配置分析选项执行分析解读数据优化与迭代记录与分享启动CPU分析器执行并记录分析观察CPU使用情况分析火焰图识别并优化问题验证优化效果原创 2024-09-21 16:06:03 · 386 阅读 · 0 评论 -
Android性能分析工具:Systrace
Systrace是Android性能分析的主要工具之一,它能够收集和检查设备上运行的所有进程的计时信息,帮助开发者分析并优化应用性能。原创 2024-09-21 16:01:24 · 715 阅读 · 0 评论 -
Android APK反编译原理和文件结构
通过dex2jar等工具,可以将DEX文件转换为JAR文件,然后使用Java反编译器(如JD-GUI、CFR等)将JAR文件反编译为Java源代码或.smali文件(一种Android虚拟机所使用的寄存器语言)。总之,APK反编译的目的是将APK文件中的不可读内容转换为可读形式,以便开发者或分析人员能够更深入地了解应用的内部结构和实现原理。这些文件是Android虚拟机所使用的寄存器语言编写的,虽然不如Java源代码直观,但可以用于修改DEX文件的内容。反编译后,该文件以文本格式呈现,便于阅读和修改。原创 2024-09-17 22:46:30 · 388 阅读 · 0 评论 -
Android APK构建流程
APK的构建流程涉及资源处理、AIDL接口转换、Java源代码编译、DEX文件生成、APK打包、签名。以及Zipalign优化等多个步骤,每个步骤都确保了APK的完整性和高效性。原创 2024-09-17 22:45:09 · 477 阅读 · 0 评论 -
Gradle 生命周期与依赖管理
Gradle的生命周期和依赖管理是Android开发中的关键部分。理解并有效利用这些概念,可以帮助开发者更好地管理项目的构建过程和依赖关系,从而提高开发效率和应用的稳定性。在处理依赖传递问题时,建议优先考虑使用exclude来排除不必要的依赖项,并谨慎使用force以避免潜在的问题。原创 2024-09-15 20:52:53 · 630 阅读 · 0 评论 -
插件化总结和资源ID冲突处理
插件化是一种动态加载技术,允许宿主APK在运行时加载并执行其他未安装的APK(插件APK)。这种技术带来了诸多优势,如功能的动态拓展、应用的动态更新、灰度发布、A/B测试等,极大地提升了应用的灵活性和用户体验。Hook(钩子)技术是一种在程序运行时插入自定义代码逻辑的技术,用于改变原有程序的行为或执行流程。在Android开发中,Hook技术常用于插件化、热修复、性能监控等场景。原创 2024-09-15 20:46:30 · 981 阅读 · 0 评论 -
插件化二:Hook AMS实现
在Android系统中,通过结合拦截修改方法和Hook Handler的消息,可以实现插件Activity的动态加载和执行,同时绕过AMS(Activity Manager Service)对插件Activity的直接检测。腾讯的QZone和Tinker等应用本质上就是采用了这种hook方式来实现插件化,主要操作的是dexElements。原创 2024-09-15 20:39:41 · 1299 阅读 · 0 评论 -
插件化一:占位式实现
接口定义:创建一个接口(如),包含Activity的生命周期方法,以便插件Activity实现并供宿主调用。// 其他可能需要的生命周期方法占位Activity:在宿主应用中,定义一个占位Activity(如),用于加载和启动插件Activity。// 注意:这里只是示例,实际中需要处理更多生命周期和异常// 代理其他生命周期方法给插件Activity...接口定义:类似于完整版,但可能更简化,只包含必要的hook点。原创 2024-09-15 20:31:26 · 354 阅读 · 0 评论 -
Android OverScroller 原理解析
1.滚动计算使用物理公式(如基于速度和加速度的公式)来计算滚动动画的每一步位置。这允许它模拟现实世界中物体滚动的行为,包括惯性。边界处理能够识别滚动边界,并在达到边界时停止滚动或执行过界滚动效果(如果启用了)。Fling 手势:当用户快速滑动并释放时,可以接收起始位置和速度等参数,并基于这些参数启动一个滚动动画,模拟惯性滚动的效果。时间插值器允许你设置时间插值器(Interpolator),以控制动画的速度曲线,使滚动看起来更自然。原创 2024-09-04 11:53:23 · 810 阅读 · 0 评论 -
Android 网络请求验签
Android网络请求的签名验证是确保请求数据在传输过程中未被篡改,并且验证请求确实来自可信的客户端的一种机制。这一过程通常涉及生成签名和验证签名两个主要步骤。原创 2024-09-03 18:31:55 · 318 阅读 · 0 评论 -
Android存储数据方式
另外,如果图片是从资源文件中加载的(如放在drawable目录下),Android系统会根据设备的DPI值和资源目录的DPI值对图片进行缩放,这也会影响图片在内存中的实际占用大小。SharedPreferences是Android提供的一种轻量级的数据存储方式,基于键值对存储数据,数据以XML文件的形式保存在设备上。它提供了简单的API来读取和写入数据,并且支持数据持久化,即使应用关闭后数据依然存在。Android系统提供了多种数据存储方式,以满足不同场景下的数据存储需求。原创 2024-09-01 18:09:32 · 960 阅读 · 0 评论 -
Android Activity.onStart()对用户可见,但是获取不到宽高
仅仅是Activity生命周期中的一个状态点,表示Activity即将变得可见,但并不意味着所有的初始化工作(包括视图的测量、布局和绘制)都已完成。方法中,虽然Activity的窗口已经对用户可见,但上述的绘制三部曲(测量、布局、绘制)可能还没有开始,或者刚刚开始但还没有完成。方法完成的,它递归地遍历View树,根据每个View的布局参数(LayoutParams)和父容器的约束来计算每个View的大小。中,也不能保证视图的宽高一定可用,特别是当涉及到异步加载的视图或复杂的布局时。方法来绘制每个View。原创 2024-09-01 18:34:30 · 489 阅读 · 0 评论 -
LiveData.postValue() 可能会丢失数据
此外,LiveData 还能感知组件(如 Activity 或 Fragment)的生命周期,从而避免在组件不可见时更新数据,这有助于减少内存泄漏和不必要的资源消耗。以下是一个简单的 LiveData 使用示例,展示了如何在 ViewModel 中使用 LiveData 来持有和更新数据,并在 Activity 中观察这些数据的变化。调用在短时间内连续发生,由于它们都被排队在主线程上执行,后面的更新可能会覆盖前面的更新。更新LiveData的值,观察者可能只会收到最后一个更新的值,而不是所有更新过的值。原创 2024-09-02 11:17:07 · 747 阅读 · 0 评论 -
SharedPreferences原理和使用示例
SharedPreferences是Android平台上一个轻量级的存储类,用于保存应用程序的各种配置信息。它以“键-值”对(Key-Value Pair)的形式存储数据,并且这些数据最终会被保存到一个XML文件中。SharedPreferences适合用于存储少量的数据,如用户偏好设置、登录状态等。原创 2024-09-01 10:17:43 · 972 阅读 · 0 评论 -
Android动画分类及原理
窗口动画主要涉及Activity或窗口(Window)的进入、退出等视觉效果。原创 2024-08-31 17:18:02 · 1636 阅读 · 0 评论 -
Activity启动原理、启动模式
在Android开发中,Activity的启动模式决定了Activity的启动和运行方式。Android提供了四种基本的启动模式,分别是:standard、singleTop、singleTask和singleInstance。每种模式都有其特定的应用场景和行为特性。原创 2024-08-31 17:25:02 · 1097 阅读 · 0 评论 -
Android动画掉帧
Android动画掉帧是一个常见的问题,它会导致动画播放不流畅,影响用户体验。原创 2024-08-31 22:08:33 · 356 阅读 · 0 评论