activity

MVVM 架构与数据绑定库

血红的双手。 提交于 2019-11-26 00:10:36
Model-View-Presenter(MVP),即模型-视图-表示层,架构被广泛应用于 Android 应用程序,通过引入表示层将视图与表示逻辑和模型分离。Model-View-ViewModel(MVVM),即模型-视图-视图模型,与 MVP 非常相似,视图模型充当增强的表示层,使用数据绑定器保持视图模型和视图同步。通过将视图绑定到视图模型属性上,数据绑定程序可以处理视图更新而无需手动更改数据来设置视图(例如,不用再设置控件 TextView 的setTest() 或者 setVisibility() 属性)。与 MVP 中的表示层一样,视图模型可以很容易地进行单元测试。本文介绍了数据绑定库和 MVVM 架构模式,以及它们在 Android 上协同工作方式。 数据绑定 什么是数据绑定? 数据绑定是一种把数据绑定到用户界面元素(控件)的通用机制。通常,数据绑定会将数据从本地存储或者网络绑定到显示层,其特征是数据的改变会自动在数据源和用户界面之间同步。 数据绑定库的好处 TextView textView = (TextView) findViewById(R.id.label); EditText editText = (EditText) findViewById(R.id.userinput); ProgressBar progressBar = (ProgressBar)

Matrix源码分析之第一篇

送分小仙女□ 提交于 2019-11-26 00:09:50
Matrix源码分析之第一篇 概述 前几天腾讯将一款Android应用性能监控的框架matrix开源了,源码地址在 https://github.com/Tencent/matrix ,作者是微信终端团队。matrix到底是什么?据官方说法如下: Matrix 是一款微信研发并日常使用的 APM(Application Performance Manage),当前主要运行在 Android 平台上。 Matrix 的目标是建立统一的应用性能接入框架,通过各种性能监控方案,对性能监控项的异常数据进行采集和分析,输出相应的问题分析、定位与优化建议,从而帮助开发者开发出更高质量的应用。 Matrix 当前监控范围包括:应用安装包大小,帧率变化,启动耗时,卡顿,慢方法,SQLite 操作优化,文件读写,内存泄漏等等(此段截取自matrix的GitHub介绍) 下面直接看源码: <!-- more --> 代码的入口在application的onCreate()里进行初始化的, Matrix.Builder builder = new Matrix.Builder(this); ``` //省略了一部分构造器创建对象的一段代码,这里仅说明是入口 ``` Matrix.init(builder.build()); 和leakcanary等库一样在application初始化

7.Fragment

你。 提交于 2019-11-25 21:29:09
概念 直译 碎片、片段 目的 解决不同屏幕分辩率的动态和灵活UI设计。 场景 fragments 在活动Activity中为不同的屏幕尺寸修改布局配置(小屏幕可能每次显示一个片段,而大屏幕则可以显示两个或更多) *********如微信主界面切换,使用四个fragment进行切换,开销更小,更流畅,主界面一个activity即可搞定********* 要求 Fragment必须被写成可重用的模块。 fragment有自己的layout,自己进行事件响应,拥有自己的生命周期和行为,所以你可以在多个activity中包含同一个Fragment的不同实例。 优点 Fragment可以使你能够将activity分离成多个可重用的组件,每个都有它自己的生命周期和UI。 Fragment可以轻松得创建动态灵活的UI设计,可以适应于不同的屏幕尺寸。从手机到平板电脑。 Fragment是一个独立的模块,紧紧地与activity绑定在一起。可以运行中动态地移除、加入、交换等。 Fragment提供一个新的方式让你在不同的安卓设备上统一你的UI。 Fragment 解决Activity间的切换不流畅,轻量切换。 Fragment 替代TabActivity做导航,性能更好。 Fragment 在4.2.版本中新增嵌套fragment使用方法,能够生成更好的界面效果。

Android自动化补记-浅谈Android Espresso自动化测试框架

纵饮孤独 提交于 2019-11-25 19:46:38
早在去年的时候,经过一阶段针对“浓缩咖啡”Espresso框架的仔细品尝,浅品深品,不得不说,毕竟是谷歌力推的测试框架,就连AndroidStudio默认创建工程后都自带编译的包,果然不出意外的这个框架十分的强大,强大到什么程度,比如只在UI线程静止的时候再进行操作,自动异步更新测试监听以及UI线程,意味着只要定位准,手机不卡等一些因素不需要担心超时等页面刷新不同步等问题,不过也是有缺点的,就是学习成本比较高,特别是针对不同自定义控件以及情况的适配,网上有的文档资源特别少;当然,整体来说依旧是白盒自动化测试的首选,最好结合一下UiAutoMation使用,效果不错; 起初这个框架最让我眼前一亮的是这个框架在编写自动化代码的方式,通过直接引用静态方法来直接调用测试Api,同时同时同时(来个三遍),做到了定位+操作+检验,三个测试操作,一行代码搞定的精妙语法,哇,很强,我怎么就想不到封装成这个样儿; 后来逐步的使用,才发现这个水有点儿深,适配控件自动化着实有点儿费劲,这里先不做这方面的讨论了,只是浅浅的分享一下; 回到正题,下面简单介绍一下如何使用这个框架来编写测试代码 首先,拿到我们测试的源码,为什么要拿源码来白盒测试而不是黑盒这点会面会详细的说明,然后将项目导入到Android Studio中,首先保证导入的App能正常运行,再进行下一步的写自动化代码; 这里我也没有用什么源码