自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 资源 (5)
  • 收藏
  • 关注

原创 全屏dialog框

在 Activity.onDestroy() 中调用 dialog.dismiss() 防止内存泄漏。// 关键代码:设置 Window 全屏。android:text="全屏对话框"// 可选:设置进场/退场动画。android:text="关闭"/>// 在 Dialog 的 onStart() 中添加。-- 隐藏标题栏和边框 -->-- 透明背景避免留白 -->-- 标题栏(可选) -->‌1. 定义全屏 Dialog 样式‌。// 在 Dialog 构造函数中添加。-- 内容区域 -->

2025-04-11 10:21:05 493

原创 理解bitmap的宽度px与毫米mm与屏幕分辨率dpi的关系

在 Android 中,‌1 毫米(mm)对应的 dp(密度无关像素)值取决于设备的屏幕密度(DPI)‌,而 Bitmap 的宽度最终由 dp 转换为 px(物理像素)。Log.d("BitmapInfo", "总像素: " + totalPixels + ", 内存占用: " + memorySize + " 字节");‌dp 转 px 公式‌: px = dp × (屏幕DPI ÷ 160) 160‌:基准密度(mdpi)‌。25.4‌:1 英寸 = 25.4 毫米(单位转换系数)

2025-04-11 10:13:29 613

原创 graphics相关控件、bitmap优化注意点、自定义view相关方法api

‌及时回收资源: Activity.onDestroy()时调用bitmap.recycle() 避免静态变量持有bitmap导致内存泄漏。关系:measure()是final方法,由父容器调用并触发测量流程,内部会调用onMeasure()完成实际测量‌,‌ Android 8.0+‌:利用Bitmap.Config.HARDWARE减少GPU内存拷贝(只读场景)‌。// 复用目标Bitmap‌。onMeasure()/onLayout()/onDraw() 测量、布局位置、绘制。

2025-04-11 10:02:02 312

原创 Android 中,新建 Bitmap 的几种方式:

BitmapFactory.decodeResource() 从 res/drawable 加载。// 创建一个空白的 Bitmap(宽 100px,高 100px,ARGB_8888 格式)// 缩小 2 倍加载。View.getDrawingCache() 将 View 转 Bitmap。‌方法 1:使用 Bitmap.createBitmap()(指定宽高和配置)Bitmap.createBitmap() 创建空白 Bitmap。// 例如,将一个 View 转换为 Bitmap。

2025-04-09 10:04:07 664

原创 android性能优化之 内存优化

避免在onDraw方法里面执行对象的创建,onDraw界面,图像,view有变动,则会重新执行onDraw,如果在里面进行对象创建,则会影响绘制时间,如果onDraw绘制时间较长,则会引起UI卡顿,且onDraw频繁执行,创建也会频繁执行。- 问题分析: ‌是指应用程序在运行过程中,申请的内存超过了系统或虚拟机可分配的内存上限,导致程序崩溃的现象、尤其是在处理大内存对象(如位图)或内存泄漏时。- 自带内存监控工具?- 内存抖动:突然间申请很多变量和空间后再释放,且GC时所有进程会暂停,重复此行为。

2025-03-22 16:36:58 1930

原创 RxJava事件流库 线程异步

2. subscribeOn() 和 observeOn() //这两个方法调用分别用来指定观察者事件的产生的线程Observable.OnSubscribe()、和事件进行消费的线程.subscribe(new Observer() {onNext()/onCompleted()/onError()}} || .subscribe(new Subscriber() {onNext()/onCompleted()/onError()}}妈妈再也不怕我的用户手抖点开两个重复的界面啦。

2025-03-19 16:37:41 246

原创 android 三方开源库 网络库、图片加载库

一. ‌Cronet‌是一个基于‌Chromium‌网络组件的Android网络请求框架,它利用了Google Chrome浏览器的网络堆栈,提供了高效、低延迟的HTTP和TCP/IP通信能力。1. Volley是Google官方推出的一个Android网络库,它的主要优点在于对请求的自动调度和优先级处理,以及内存和性能的优化。- RxJava在Android中是一个处理异步操作和事件流的强大库,RxJava是一个在Java VM上使用可观测的序列来组成异步的、基于事件的程序的库。

2025-03-12 22:51:13 1485

原创 android 之Service

‌‌:适用于执行后台任务,不需要与服务进行频繁交互。‌‌:适用于需要与服务进行频繁交互的场景,如客户端需要获取服务状态或控制服务行为。理解这两种机制的区别可以帮助开发者在设计应用架构时选择适合的服务类型。

2025-02-19 01:29:00 457

原创 WMS职责工作 及view体系架构

一 view的体系架构。

2025-02-17 03:52:37 159

原创 AS集成CodeGPT智能编码助手-阿里云百炼平台模型

对话模型:code模型。

2025-02-11 23:27:11 488

原创 安卓中的Handler是怎样的

Handler: 是实现android中不同线程间通信的一种机制,它允许主线程UI线程通过发送message和runable对象到handler,在其handler关联线程中处理这些消息和runnable、 其常用于执行异步任务处理,网络请求/文件读写等,将耗时操作放在单独线程中执行并通过handler进行返回UI主线程,可以避免阻塞UI主线程,提高响应速度。。<<<<////>>>>>Handler: 处理消息的对象,它负责发送和处理消息、sendMessage()/post()

2025-01-22 03:40:06 810

原创 AMS作用、流程 与 AMS相关

简单理解:launcher进程的ActivityManagerProxy代理类发送请求到SystemServer,systemServer请求zygote去fork新进程,从system_server的AMS中取出对应的binder-ApplicationThreadProxy,然后启动app的Activity。1main线程,只是程序的主线程,也是日常用到的最多的线程,也叫。,而且是一个系统服务,就是包管理服务,电池管理服务,震动管理服务等。接口,用于进程之间通信,具体来说,就是我们程序和AMS。

2025-01-20 03:52:32 796 7

原创 编写系统服务,m-aosp_x86_64_eng报错

文件代码:ILarryManager.aidl、LarryManager.java、LarryManagerService.java。

2025-01-18 20:52:11 793

原创 init进程zygote进程 及系统进程启动流程

1. init根据init.rc运行并携带‘–zygote’和参数。里将启动JavaVM,并且注册所有framework相关的系统JNI接口。3.第一次进入Java世界,运行函数初始化并创建Socket的 server 端。4.然后fork一个新的进程并在新进程里初始化之前,Zygote是preload常用的Java类库以及系统的resources,同时GC()清理内存空间,为子进程省去重复的作。里将所有的系统Service。

2025-01-16 07:13:10 1705 6

原创 Binder

系统就可以通过动态添加一个 内核模块运行在内核空间,用户进程之间通过这个内核模块作为桥梁来实现通信,这个内核模块即Binder Driver binder驱动,通过内核缓冲区与内存映射关系实现数据读写,即跨进程间通信。Android 系统是基于 Linux 内核的,Linux 已经提供了管道、消息队列、共享内存和 Socket 等 IPC 机制。是一个使用 binder的标准方案,该方案的代码同样的可以通过用户自己编写的方式完成。要去调用 AMS的代码,所以此时就会涉及到跨进程调度,基于第三章的。

2025-01-16 05:39:34 788 7

原创 Android SDK命令行工具 commandline-tools Ubantu环境

https://dl.google.com/android/repository/commandlinetools-linux-7302050_latest.zip 安装的这个版本的匹配openjdk8。source ~/.bashrc // • echo '...' >> ~/.bashrc: 将环境变量写入 ~/.bashrc 文件。解决: 先配置高版本jdk、、、、再安装历史版本commandlinetools、-再对应用回openjdk8。

2025-01-15 02:05:14 1017

原创 emulator测试命令 kvm硬件加速支持

检查是否支持虚拟化技术 :egrep -c '(vmx|svm)' /proc/cpuinfo 1-支持 0-不支持。egrep -c '(vmx|svm)' /proc/cpuinfo cpu虚拟化支持。sudo apt-get install cpu-checker //安装检查工具。kvm-ok kvm支持。环境:ubantu 16.04 aosp android-8.1.0_r1。sudo kvm-ok //开始检查。

2025-01-15 01:34:20 638

原创 kernel内核编译 emulator模拟器启动报错 linux内核kernel未找到报错

AOSP aosp kernel内核编译

2025-01-15 01:12:15 575

原创 linux命令行

将磁盘vmdk自增长模式更改为预分配 vmware-vdiskmanager-r "d:\Virtual\win2008-1_2.vmdk"-t0"d:\Virtual\new.vmdk"然后重新执行sour。rpm -e your-package --nodeps 忽略依赖关系直接删除‌。dpkg --list | grep package-name 检查已安装的包。sudo update-alternatives --config 工具名。

2025-01-14 23:39:16 375 1

原创 AOSP第一次编译 android源码编译aosp从0开始编译 流程

AOSP源码从0开始编译 与linux、虚拟机vmware环境

2025-01-10 20:00:19 812 2

listview水平滚动条 多级动态异步加载 TreeView 安卓程序demo

1.新添加了横向水平滚动条的添加功能实现. horizontalScrollView实现方式. 2.TreeView 基于ListView的实现方式. 3.多级动态异步加载. 其它例子demo优化.

2015-11-01

仿微信图片上传,带有拍照,并可以放大缩小预览Photo

photo android 预览 拍照 选图

2016-01-20

java读取word2003和word2007所需jar包

dom4j-1.6.1.jar geronimo-stax-api_1.0_spec-1.0.jar ooxml-schemas-1.0.jar openxml4j-bin-beta.jar poi-3.13-20150929.jar poi-ooxml-3.13-20150929.jar poi-scratchpad-3.13-20150929.jar xmlbeans-2.6.0.jar

2015-10-14

jquery 资源

1.后缀名为*.chm、*.exe的电子书,不需安装任何软件即可直阅读。 ║ ║2.后缀名为*.pdf的电子书,需安装Arcobat Reader软件。 ║ ║3.后缀名为*.pdg和*.001,*.002......的电子书,需安装超星阅览器。║ ║4.后缀名为*.wdl的电子书,需安装DyanDoc Free Reader软件。 ║ ║5.后缀名为* .ceb、*.xeb的电子书,需安装方正的Apabi Reader软件 ║ ║6.后缀名为*.caj、*.nh、*,kdh的电子书,需安装中国期刊网CAJ、NH ║ ║文件浏览器CAJViewer软件。

2013-07-25

jquery帮助文档

jQuery 文档XML文件内英文及代码部分版权归原官方wiki所有,中文部分分属为之漫笔, Shawphy and Cloudream所有。欢迎转载、替换其他XSL样式或其他形式的转载,但必须保证XML文件原样转载,保留署名以及不可用于商业用途。本文档仅供参考,出于方便学习的目的而分发。使用者必须自行承担风险,因使用此文档造成的任何损失或者潜在的损失,译者均不为其负责。

2013-07-25

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除