自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 收藏
  • 关注

原创 harmony:应用数据持久化

应用数据持久化

2024-07-09 13:23:31 158

原创 Harmonyos 流量变现

为满足App不同场景下的内容形式,流量变现服务为您提供了Banner广告、原生广告、激励广告、插屏广告、开屏广告、贴片广告六种广告形式。

2024-06-26 09:20:26 250

原创 Android的通知渠道

通知渠道的引入主要是为了给用户提供更好的通知管理能力,让他们能够更细致地控制和管理不同类型的通知。通知渠道的引入使开发者需要在设计应用时更加注意通知的管理和用户偏好的适应,同时也让用户拥有了更大的主动权,可以根据自己的需求来定制通知的行为。比如,一个应用可能有消息通知、促销通知、系统更新通知等,每种都可以配置为一个独立的通知渠道。在我看来,规范使用「通知渠道」的好处可以概括为:更细粒度地划分应用内通知的场景,可以单独控制每种场景对用户的干扰程度,降低对用户的打扰,从而提高用户体验。是否在锁屏上显示通知。

2024-06-12 19:46:15 304

原创 ArkTS 自定义组件

ArkTS通过struct声明组件名,并通过@Component和@Entry装饰器,来构成一个自定义组件。ArkTS提供了@Builder装饰器,来修饰一个函数,快速生成布局内容,从而可以避免重复的UI描述内容。使用@Entry和@Component装饰的自定义组件作为页面的入口,会在页面加载时首先进行渲染。使用时只需要使用this关键字访问@Builder装饰的函数名,即可快速创建布局。对于如下每一项的布局,两个元素为横向排列,选择Row布局。在自定义组件内需要使用build方法来进行UI描述。

2024-06-07 09:57:03 189

原创 android view的事件分发机制

而ViewGroup里面可以包裹子View,所以通过onInterceptTouchEvent方法,ViewGroup可以实现拦截,拦截了的话,ViewGroup就不会把事件继续分发给子View了,也就是说在这个ViewGroup中的子View都不会响应到任何事件了。当手指触摸到屏幕的那一刻,首先分发Action_Down事件,事件分发完后还要回传回去,然后继续从头开始分发,执行下一个Aciton_Move操作,直到执行完Action_Up事件,整个事件分发过程便到此结束。view的事件分发机制。

2024-06-07 09:19:49 387

原创 ArkTS 组件状态管理装饰器

与@State有相同的语义,但初始化方式不同。@Prop装饰的变量必须使用其父组件提供的@State变量进行初始化,允许组件内部修改@Prop变量,但更改不会通知给父组件,即@Prop属于单向数据绑定。装饰的变量可以和父组件的@State变量建立双向数据绑定,需要注意的是:@Link变量不能在组件内部进行初始化。装饰的变量是组件内部的状态数据,当这些状态数据被修改时,将会调用所在组件的build方法进行UI刷新。组件状态管理装饰器用来管理组件中的状态,它们分别是:@State、@Prop、@Link。

2024-06-07 08:43:31 123

原创 Android 探索ViewModel的设计思想

ViewModel是一种设计模式,它的目标是将UI控制器(Activity、Fragment等)与数据分离,同时保持UI的状态。在Android中,ViewModel通常用于存储和管理与UI相关的数据,以确保这些数据在屏幕旋转或配置更改等情况下不会丢失。通过深入理解ViewModel的原理和高级运用,我们可以更好地利用这一强大的架构组件。ViewModel的设计模式和生命周期感知使其成为Android开发中不可或缺的一部分。

2024-06-06 16:15:14 133 1

原创 android 如何分析应用程序的启动时间数据?

1. 确定启动时间的定义:明确你所关注的启动时间的具体范围,例如从点击应用图标到主界面显示的时间,或者从应用开始创建进程到完全启动的时间。4. 分析启动阶段:将启动过程划分为不同的阶段,例如应用初始化、Activity 初始化、资源加载等,并分别分析每个阶段的耗时。6. 优化启动流程:根据分析结果,针对性地优化启动流程,例如减少不必要的初始化操作、优化资源加载、异步执行耗时任务等。5. 关注关键指标:关注一些关键指标,如总启动时间、各阶段的时间占比、最长耗时操作等,以确定性能瓶颈所在。

2024-06-05 08:40:00 176

原创 Android Profiler 分析应用的启动时间

6. 查看启动时间:在 Android Profiler 的“System Trace”视图中,你可以查看应用程序的启动时间。1. 打开 Android Profiler:在 Android Studio 中,点击工具栏上的“Profiler”图标,以打开 Android Profiler。4. 启动应用程序:点击 Android Profiler 工具栏中的“Start”按钮,并启动你的应用程序。通过分析启动时间数据,你可以找出应用启动过程中的性能瓶颈,并进行针对性的优化。

2024-06-05 08:27:16 224

原创 使用 Android Profiler 监控性能指标

4. 你会看到 CPU、Memory、Network、Battery 等不同的选项卡。3. 在 Android Studio 中,点击底部的“Profiler”标签。8. 当你要开始监控某个指标时,点击相应选项卡上的“Record”按钮开始记录。10. 停止记录后,可以详细分析记录的数据,查看性能瓶颈、异常等情况。6. 在 Memory 选项卡中,可以观察内存分配、堆使用情况等。9. 进行你想要监测的操作,比如在应用中执行特定功能或交互。通过分析这些数据,你可以发现性能问题并进行针对性的优化。

2024-06-05 07:39:00 153

原创 Android 监控性能指标的工具:

1. Android Profiler:集成在 Android Studio 中,可监测 CPU、内存、网络、电量等多种指标。6. Hierarchy Viewer:查看 UI 布局层次和过度绘制情况。5. GPU Profiler:专门监测 GPU 相关性能。7. Battery Historian:分析电池使用情况。2. Systrace:用于分析系统和应用的整体性能。3. Traceview:可以详细分析方法执行时间等。4. LeakCanary:帮助检测内存泄漏。

2024-06-05 07:33:11 212

原创 Android 系统 UI 开发性能优化

7. 图片优化:压缩图片大小,合理选择图片格式(如 WebP),使用图片加载库(如 Glide、Picasso)。1. 避免过度绘制:使用 Hierarchy Viewer 等工具检查,减少不必要的重叠视图和重复绘制区域。3. 使用高效视图:如 RecyclerView 代替 ListView,它有更好的性能表现。6. 懒加载:对于非立即需要展示的数据和视图,采用懒加载方式。11. 减少不必要的广播和监听:避免频繁触发不必要的事件处理。5. 缓存常用视图:对于频繁复用的视图,进行适当的缓存。

2024-06-05 07:22:11 160

原创 Android ANR探秘

CPU满负荷, I/O阻塞的:I/O阻塞一般来说就是文件读写或数据库操作执行在主线程了, 也可以通过开辟子线程的方式异步执行。造成以上两种情况的首要原因就是在主线程(UI线程)里面做了太多的阻塞耗时操作, 例如文件读写, 数据库读写, 网络查询等等.知道了ANR产生的原因, 那么想要避免ANR, 也就很简单了, 就一条规则:不要在主线程(UI线程)里面做繁重的操作。寻找我们的代码点, 然后往前推, 看方法调用栈, 追溯到问题产生的根源.拿到trace信息, 文件最上的即为最新产生的ANR的trace信息.

2024-06-02 16:49:01 334

原创 安卓开发者怎么调高刷新率应用90fps

调整应用的帧率以达到流畅的90帧每秒是一项复杂而又重要的任务。通过减少视图层次结构、使用硬件加速、优化绘制操作和合理使用动画效果等方法,我们可以有效地提高应用的流畅性。只有在用户操作流畅无卡顿的情况下,我们的应用才能真正满足用户的需求。要优化应用的帧率,首先需要了解当前应用的帧率情况。因此,在开发过程中应尽量减少视图层次结构的复杂度,使用扁平化的布局结构,并避免不必要的重绘。绘制操作是应用的一个重要部分,也是影响帧率的关键因素之一。减少绘制操作的数量和复杂度,避免频繁的重绘,可以有效提高应用的帧率。

2024-05-31 17:59:06 225

原创 Android 让卡顿消失吧

APP使用起来卡顿,主要是用户在使用APP时的感知,主要表现在APP页面的刷新,滑动时的流畅度。例如用户在某个页面滑动时有明显卡住的现象就是卡顿了。开发中有一个16ms原则,即你的APP在16ms内没有更新完界面,用户就会有卡顿的感受。

2024-05-31 17:29:20 265

原创 Android13下拉状态栏添加快捷开关

frameworks/base/packages/SystemUI/res/values/config.xml中quick_settings_tiles_default添加相应keyWord字符表示相应功能。快捷栏tile的加载在QSTitleHost.java的loadTitleSpecs函数中,defaultTileList是tile的顺序,在quick_settings_tiles_default中定义。二:在QSFactoryimpl.java中添加XXTile快捷开关的相关配置。

2024-05-30 11:18:22 281

原创 HarmonyOS学习资料1:基础组件:Text/Span,TextInput/TextArea,Button,Image

Text是文本组件,用于显示文字 Span只能作为Text组件的子组件显示文本内容,可以在一个Text内添加多个Span来显示一段信息 TextInput 是单行输入框组件,通常用于响应用户的输入操作 TextArea 是 多行输入框 Button是按钮组件,通常用于响应用户的点击操作 Image是显示图片组件

2024-05-29 14:19:15 149

原创 Room组件

由于Sqlite代码写起来繁琐且容易出错,因此,开源社区逐渐出现了各种ORM(Object Relational Mapping)库。常见的有ORMLite, GreenDAO等。Google也意识到推出自家ORM库的必要性,于是有了Room,Room同其他ORM库一样,也是在Sqlite上提供了一层封装。

2024-01-11 09:55:38 348 1

原创 SystemUI 启动和初始化

SystemUI 启动流程当Android系统启动完成后,进程会通过启动一个名为的服务,这个服务是SystemUI的入口类,它继承了Service类。SystemUI本质就是一个Service,通过Pm获取到的Component是。

2024-01-09 22:14:43 688

原创 SystemUI 功能介绍

src: 包含了SystemUI的主要源码文件,按照功能或模块进行分类,例如statusbar, navigationbar, notification, keyguard, recents等。src-release: 包含了一些用于发布或优化SystemUI的源码文件。src-debug: 包含了一些用于调试或测试SystemUI的源码文件。tests: 包含了一些用于测试或验证SystemUI的源码文件。res: 包含了一些通用的资源文件,例如布局,图片,字符串等。

2024-01-09 21:50:30 654

原创 Android系统中状态栏、导航栏和下拉菜单

(NavigationBar)和下拉菜单(ExPlan)是三个常见的用户界面元素,它们分别提供了一些基本的信息显示和交互功能。例如,状态栏可以显示时间、电量、信号等信息,导航栏可以提供返回、主页、多任务等按钮,下拉菜单可以提供快速设置、通知等选项。如何在Android系统中添加状态栏、导航栏和下拉菜单的控制功能,主要涉及了SystemUI模块和Settings模块的修改,以及系统属性和广播的使用。在Android系统中,状态栏(StatusBar)、

2024-01-09 14:05:24 845

原创 Android项目构建过程

Android项目构建过程1.AAPT(Android Asset Packaging Tool)工具会打包应用中的资源文件,如AndroidManifest.xml、layout布局中的xml等,并将xml文件编译为二进制形式,当然assets文件夹中的文件不会被编译,图片及raw文件夹中的资源也会保持原来的形态,需要注意的是raw文件夹中的资源也会生成资源id。AAPT编译完成之后会生成R.java文件。2.AIDL工具会将所有的aidl接口转化为java接口。3.所有的java代码,包括R

2023-01-04 11:51:23 153

空空如也

空空如也

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

TA关注的人

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