首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Android 性能优化最佳实践

    在多层次的 UI 结构里 面,如果不可见的 UI 也在做绘制的操作,这就会导致某些像素区域被绘制了多 次。这就浪费大量的 CPU 以及 GPU 资源。...View 的绘制频率保证 60fps 是最佳的,这就要求每帧绘制时间不超过 16ms(16ms = 1000/60),虽然程序很难保证 16ms 这个时间,但是尽量降低 onDraw 方法中的 复杂度总是切实有效的...5、包体优化 我做过两年的海外应用产品,深知包体大小对于产品新增的影响,包体小百分之 五,可能新增就增加百分之五。如果产品基数很大,这个提升就更可怕了。...(‘proguard-android.txt'), } } } 5.8、 插件化 功能模块放在服务器上,按需下载,可以减少安装包大小。...选择正确的算法和数据结构应始终是我们的首要任务,以提高代码效率。

    1.4K10

    Android-活动的最佳实践

    新建一个BaseActivity类,右击包名,New,Java Class,输入BaseActivity。...然后让BaseActivity成为项目中所有活动的父类,修改三个活动的继承结构,继承BaseActivity,因为Base继承了AppCompatActivity,所以三个活动功能不受影响。...(android.os.Process.myPid()); } }); } 加上了杀掉当前进程的代码,以保证程序完全退出, android.os.Process.killProcess...(android.os.Process.myPid()); killProcess()方法用于杀掉一个进程,接收一个进程ID参数,我们可以通过myPid()方法来活动当前程序的进程ID, 需要注意的是...启动活动的最佳写法 启动活动我们可以通过Intent构建当前的“意图”,然后调用startActivity()或startActivityForResult()方法将活动启动起来。

    58410

    Android CR 案例集 & 最佳实践

    逐渐有了一些更深的理解以及可落地的方案 个人理解,Code Review 是为了找出代码中「理想」和「现实」之间的差距,所以如何把 CR 做好,其实就可以拆解成两个问题 理想的代码究竟是怎样的,也就是所谓的最佳实践...如何找出代码中理想和现实的差距,我给出的答案是从日常的 CR 活动中形成一份 CR 案例集 于是便有了这篇文章,希望从平常的 CR 活动中收集最常见问题和改进方案,以及 Android 中可落地的最佳实践...最佳实践 1、异常处理 1....对于使用全局广播,可以通过 Intent.setPackage 来限制接收方包名,来保证安全。...主要优点: ● 对序列化数据的访问不需要打包和拆包,它将序列化数据存储在缓存中,这些数据既 可存储在文件中,又可以通过网络原样传输,而没有任何解析开销; ● 内存效率和速度:访问数据时的唯一内存需求就是缓冲区

    81710

    Android Jetpack系列——DataBinding 最佳实践

    的简单使用 ) ,这篇文章,我们来介绍一下 DataBinding 最佳实践——Binding adapters 我之所以说 Binding adapters 是 DataBinding 的最佳实践...注解值可以是已有的 xml 属性,例如 android:src、android:text等,也可以自定义属性然后在 xml 中使用。 列如官方示列当中,就介绍了个 「setPadding」 的例子。...Binding adapters的使用实践 通过上面的介绍,我们了解到了这几个注释方法,接下来,我们就要开始使用这些方法。 下面就开始实践使用: @Bindable 这个注解的理解还是十分简单的。...@BindingAdapter(value = {"android:imageUrl", "android:placeHolder", "android:error"}, requireAll = false...android:loadMoreEnable="@{true}" android:onItemClick="@{presenter.onItemClick}" android:

    1.9K40

    编写 Android Library 的最佳实践

    规范工程结构 一个规范的 Android Library 工程应该由一个 library模块与一个demo模块共同组成。 ?...所以最佳的做法是给这个方法打上@JvmStatic注解: @JvmStatic fun sayHello() { //do something...image.png 然后打开 library 的 build.gradle, 在 defaultConfig 闭包里调用 consumerProguardFiles() 方法: defaultConfig...或者如果你跟我一样喜欢动手实践的话,可以新建一个干净的 Android Project,然后在向导里勾上 Include C++ Support,最后生成出来的工程就会包含一个简单的例子,学习起来非常容易...使用单个文件统一依赖库的版本 如果你的项目分了好多模块,结构比较复杂,我这边推荐大家使用一个 versions.gradle 文件来统一所有模块依赖库的版本。

    1.2K01

    创建现代npm包的最佳实践

    因此,虽然npm已经有12年的历史了,但围绕 npm 包创建的做法应该更现代。 在这节课中,我们使用现代最佳实践(截至2022年)一步一步地创建一个npm包。...首先学习如何创建一个npm包,这样你就可以熟悉构建和发布一个包到 npm 注册表。...: 在当前包目录中,在终端运行 npm link 改变目录到你想使用npm包的项目目录。...这是因为它指向完整的软件包源代码目录,而不是你在npm注册表中找到的软件包的构建版本。 npm registry 这种方法利用了npm包的公共(或你自己)注册表。...它涉及到发布的包,并像你通常对任何其他npm包那样进行安装。 使用本文前面概述的步骤,通过 npm publish 命令发布npm包 改变目录到想使用npm包的项目目录。

    2.1K10

    google Guava包RateLimiter使用最佳实践

    以下是使用Guava RateLimiter的最佳实践: 1 创建RateLimiter对象的最佳实践 在创建RateLimiter对象时,建议使用静态工厂方法来创建,因为它提供了更清晰的API,并且允许您使用不同的参数值来创建...以下是使用静态工厂方法创建RateLimiter对象的示例: RateLimiter rateLimiter = RateLimiter.create(10); //每秒允许10个请求 1.1 使用 acquire()方法的最佳实践...waitTime进行阻塞 Thread.sleep((long) (waitTime * 1000)); } //执行请求 executeRequest(); 1.2 使用tryAcquire()方法的最佳实践...许可证可用,执行请求 executeRequest(); } else { //许可证不可用,等待一段时间 //TODO: 等待逻辑 } 以上是使用 Guava RateLimiter 的最佳实践

    40720

    Android App包瘦身优化实践

    JPEG,官方评测quality参数等于75均衡最佳), 可以通过PNG到WebP转换工具来进行转换。...资源混淆 在笔者另一篇《美团Android资源混淆保护实践》文章中介绍了采用对资源混淆的方式来保护资源的安全,同时也提到了这种方式有显著的瘦身效果。...通过android-chunk-utils把resources.arsc中对应的定义移除; 删除资源包中对应的资源文件。...一个好的App的标准有很多方面,但提供尽可能小的安装包是其中一个重要的方面,这也是对我们Android开发者人员自身的提出的基本要求,要时刻保持良好的编程习惯和对包体积敏锐的嗅觉。...安装包立减1M--微信Android资源混淆打包工具 减少 APK 的大小,Android 官方这样说 Google I/O 2016 笔记:APK 瘦身的正确姿势

    1.6K30

    Android 存储空间的最佳实践

    分区存储改变了应用在外置存储中保存和访问文件的方式,为了帮您迁移应用并支持分区存储,我们概括了常见用例的最佳实践并分享给大家。...在 Android 9 及更低版本上运行 使用以下方法: 使用 "请求应用权限" 一文中描述的最佳实践来请求 WRITE_EXTERNAL_STORAGE 权限。...在 Android 11 上运行 使用以下方法: 使用 "请求应用权限" 一文中描述的最佳实践来请求 READ_EXTERNAL_STORAGE 权限。 使用直接文件路径访问文件。...在 Android 9 及更低版本上运行 使用以下方法:  使用 "请求应用权限" 一文中描述的最佳实践来请求 WRITE_EXTERNAL_STORAGE 权限。...了解有关 Android 平台文件存储与访问的详细信息,请参阅以下资源: 数据和文件存储概览 如果您想了解更多最新关于使用存储空间的最佳实践,请查阅 Android 官方中文文档网站中 Android

    1.7K10

    Python最佳实践指南-结构化工程

    仓库的结构 这很重要 在一个健康的开发周期中,代码风格,API设计和自动化是非常关键的。同样的,对于工程的 架构 ,仓库的结构也是关键的一部分。...结构是一把钥匙 得益于Python提供的导入与管理模块的方式,结构化Python项目变得相对简单。...容易结构化的项目同样意味着它的结构化容易做得糟糕。...包 Python提供非常简单的包管理系统,即简单地将模块管理机制扩展到一个目录上(目录扩 展为包)。 任意包含 __init__.py 文件的目录都被认为是一个Python包。...一个常见的问题是往 __init__.py 中加了过多代码,随着项目的复杂度增长, 目录结构越来越深,子包和更深嵌套的子包可能会出现。

    69941

    Android最佳性能实践(四)——布局优化技巧

    还没有看过前面前面一篇文章的朋友建议可以先去阅读 Android最佳性能实践(三)——高性能编码优化 。...好的,的用法就是这么简单,现在重新运行一下程序,你会看到界面没有任何改变,然后我们再通过View Hierarchy工具来查看一下当前的View结构,如下图所示: ?...另外需要提醒大家一点,ViewStub所加载的布局是不可以使用标签的,因此这有可能导致加载出来的布局存在着多余的嵌套结构,具体如何去取舍就要根据各自的实际情况来决定了,对于那些隐藏的布局文件结构相当复杂的情况...,使用ViewStub还是一种相当不错的选择的,即使增加了一层无用的布局结构,仍然还是利大于弊。...好的,那么最佳性能实践系列的文章就到此结束,感谢大家有耐心看到最后。

    1.3K81

    Android最佳性能实践(一)——合理管理内存

    注意本系列文章的内容基本源于Android Doc,如果想要阅读更加详细的关于性能方面的资料,可以直接去阅读Android官方文档。...尽管Android系统的虚拟机拥有自动回收垃圾的机制,但这并不代表我们就可以忽视应该在什么时候分配和释放内存。...为了能够控制Service的生命周期,Android官方推荐的最佳解决方案就是使用IntentService,这种Service的最大特点就是当后台任务执行结束后会自动停止,从而极大程度上避免了Service...,就可以这样写: android:name=".PlaybackService" android:process=":background" /> 这里指定的进程名是...但这只是第一步而已,为了要让程序拥有最佳性能,我们要学习的东西还有很多,下篇文章当中将会介绍如何分析内存的使用情况,感兴趣的朋友请继续阅读 Android最佳性能实践(二)——分析内存的使用情况 。

    80761

    【GIT最佳实践】--GIT最佳实践

    一、提交消息规范 提交消息规范是在使用Git进行版本控制时的一项最佳实践,它有助于组织和标准化提交消息,使团队更容易理解和管理项目的变更历史。...以下是关于Git提交消息规范的最佳实践: 使用清晰、有意义的消息: 提交消息应当简洁而明了地描述本次提交的目的和内容。使用明确的语言,让其他开发者能够快速理解提交的重要性。...通过遵循这些Git提交消息规范的最佳实践,你可以提高团队协作的效率,更容易维护项目的历史记录,并降低理解和管理代码变更所需的认知负担。...三、GIT工作流程的最佳实践 在Git中,使用适当的工作流程是关键的最佳实践,它有助于组织团队的协作,确保代码库的整洁性,并提高项目的可维护性。...以下是关于Git工作流程的最佳实践: 选择适合项目的工作流程: 根据项目的性质和规模,选择适合的工作流程。

    38140

    Java 设计模式最佳实践:四、结构模式

    本章的目的是学习结构模式。结构模式是通过利用对象和类之间的关系来创建复杂结构的模式。大多数结构模式都是基于继承的。...在这方面,它类似于复合模式,它将多个对象组合在一起,以形成作为一个对象的复杂结构。...在内部,它使用数据结构(如树、图形、数组或链表)来表示模型: JVM 提供了复合模式的最佳示例,因为它通常被实现为一个栈机器(出于可移植性的原因)。从当前线程栈中推送和弹出操作。...外观对结构的作用与中介对对象通信的作用一样,它统一并简化了使用。...对象池模式和享元模式的区别在于,第一个(创建模式)是一个保存可变域对象的容器,而享元(结构模式)是一个不可变的域对象。

    84230
    领券