Android
文章平均质量分 83
洋芋洋芋彡
Creators Never Follow.
展开
-
Appium在Dialog/DialogFragment关闭后找不到布局元素的解决方法
Appium在Dialog/DialogFragment关闭后找不到布局元素的解决方法Appium在进行自动化测试时,当Dialog/DialogFragment关闭后找不到布局元素。该问题属于一个Known Issue(点击这里),主要出现在Android 6.0以上。解决问题主要有两种方法:手写方法使程序先进入后台再显示:public void minimize() { dr...原创 2019-03-06 11:23:10 · 985 阅读 · 0 评论 -
Android ViewStub, Gone & Invisible
1. invisibleview设置为invisible时,view在layout布局文件中会占用位置,但是view为不可见,该view还是会创建对象,会被初始化,会占用资源。2. goneview设置gone时,view在layout布局文件中不占用位置,但是该view还是会创建对象,会被初始化,会占用内存等资源。3. ViewStubViewStub是一个轻量级的V...转载 2018-04-13 09:18:39 · 587 阅读 · 0 评论 -
Https
HTTPS(Hypertext Transfer Protocol Secure)是一种通过计算机网络进行安全通信的传输协议。HTTPS经由HTTP进行通信,但利用TLS来加密数据包。HTTPS开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。1...转载 2018-04-18 16:26:52 · 330 阅读 · 0 评论 -
Android 策略模式
1. 概念策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。 针对同一类型操作,将复杂多样的处理方式分别开来,有选择的实现各自特有的操作。2. 使用场景针对同一类型问题的多种处理方式,仅仅是具体行为有差别时。需要安全的封装多种同一类型的操作时。出现同一抽象多个子类,而又需要使用if-else 或者 ...原创 2018-04-06 09:13:43 · 323 阅读 · 0 评论 -
Android 组合模式
1. 概念将对象以树形结构组织起来,以达成“部分——整体”的层次结构,使得客户端对单个对象和组合对象的使用具有一致性。2. 使用场景需要表示一个对象整体或部分层次;让客户能够忽略不同对象层次的变化。3. 优点高层模块调用简单节点自由增加4. 缺点控制叶子节点方法较为困难;由于是使用继承,则增加方法困难5. Android中的使用And...原创 2018-04-06 08:40:55 · 164 阅读 · 0 评论 -
Android 外观模式
1. 概念外观模式的主要目的在于让外部减少与子系统内部多个模块的交互,从而让外部能够更简单的使用子系统,它负责把客户端的请求转发给子系统内部的各个模块进行处理。外观模式提供一个统一的接口,用来访问子系统中的一群接口,外观定义了一个高层接口,让子系统更容易使用。 2. 使用场景如果你希望为复杂的子系统提供一个简单接口的时候,可以考虑使用外观模式。使用外观对象对实现大部分客户需要...原创 2018-04-05 12:54:10 · 234 阅读 · 0 评论 -
Android 装饰模式
1. 概念动态地给一个对象增加一些额外的职责,就增加对象功能而言,装饰模式比生成子类实现更加灵活,装饰模式是一种对象结构型模式。可以是继承的一种替代。2. 使用场景在不影响其他对象的情况下,以动态、透明的方式给单个对象增加职责;当不能采用继承的方式对系统进行扩展或者采用继承不利于系统扩展和维护时可以使用装饰模式;3. UMLComponent:抽象组件,可以是一...转载 2018-04-05 11:16:25 · 124 阅读 · 0 评论 -
Android Adapter模式
1. 模式定义将一个类的接口转换成客户希望的另一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 其别名为包装器(Wrapper)2. 使用场景如果你想要使用一个已经存在的类,但是它的接口不符合你的需求,这种情况可以使用适配器模式,来把已有的实现转换成你需要的接口;如果你想创建一个可以复用的类,这个类可能和一些不兼容的类一起工作,这种情况可以...原创 2018-04-05 10:33:06 · 177 阅读 · 0 评论 -
Android Builder模式
1. 模式定义Builder模式是比较复杂的创建型模式,它将客户端与包含多个组成部分(或部件)的复杂对象的创建过程分离,使得同样的构建过程可以创建不同的表示。2. 使用场景相同的方法,不同的执行顺序,产生不同的事件结果时;多个部件或零件,都可以装配到一个对象中,但是产生的运行结果又不相同时;产品类非常复杂,或者产品类中的调用顺序不同产生了不同的效能,这个时候使用建造者模式非常合适...原创 2018-04-05 09:52:32 · 155 阅读 · 0 评论 -
Java单例模式(Singleton)
1. 什么是单例模式 Java中单例(Singleton)模式是一种广泛使用的设计模式。它用于产生一个对象的具体实例,可以确保系统中一个类只产生一个实例。单例模式的主要作用是保证在Java程序中,某个类只有一个实例存在。一些管理器和控制器常被设计成单例模式。 因程序需要,有时我们只需要某个类同时保留一个对象,不希望有更多对象,此时,我们则应考虑单例模式的设计。2. 单例模式...原创 2018-02-11 22:37:20 · 204 阅读 · 0 评论 -
Android Handler
1. 概念handler通过发送和处理Message和Runnable对象来关联向对应线程的MessageQueue。可以让对应的Message和Runnable在未来的某个时间点进行相应的操作;让自己想要处理的耗时操作放在子线程,让更新UI的操作放在主线程。2. 作用当我们需要在子线程处理耗时的操作(例如访问网络,数据库的操作),而当耗时的操作完成后,需要更新UI,这就需要...原创 2018-04-09 16:19:25 · 158 阅读 · 0 评论 -
Android 模板模式
1. 概念模板方法是通过定义一个算法骨架,而将算法中的步骤延迟到子类,这样子类就可以复写这些步骤来实现特定的算法。2. 使用场景多个子类有公有的方法,并且逻辑基本相同时;重要、复杂的算法,可以把核心算法设计为模板方法;重构时,模板模式是一个经常使用的模式。抽象模板&具体模板:定义的数量和类型/模板的方法3. 在Android中的实际应用activity...原创 2018-04-07 08:59:45 · 265 阅读 · 0 评论 -
Android 观察者模式
1. 概念定义对象之间一对多的依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新。2. 使用场景一个抽象模型有两个方面,其中一个方面依赖于另一个方面;一个对象的改变将导致一个或多个其他对象也发送改变;需要在系统中创建一个触发链。3. UML抽象主题(Subject):它把所有观察者对象的引用保存到一个聚集里,每个主题都可以有任何数量的观...原创 2018-04-07 10:35:14 · 173 阅读 · 0 评论 -
Android中的矢量动画
Android中的矢量动画在Android中,对于矢量动画我们可以使用的是AnimatedVectorDrawableCompat,其能够兼容更多的版本(Android 4.0 (API level 14) 及以上)。对于API 24及更高版本,此类会自动委托给AnimatedVectorDrawable。 对于API 24之下的版本,此类相当是带有ObjectAnimator和Animato...原创 2019-02-07 22:26:19 · 1571 阅读 · 2 评论 -
React Native 列表的总结
React Native 列表的总结FlatList和SectionList都是React Native中高性能的列表组件。他们有着共同的特点:完全跨平台。行组件显示或隐藏时可配置回调事件。支持单独的头部组件。支持单独的尾部组件。支持自定义行间分隔线。支持下拉刷新。支持上拉加载。实质两者都是基于VirtualizedList组件的封装,因此需要注意:当某行滑出渲染区域之外...原创 2018-12-19 09:38:31 · 1846 阅读 · 0 评论 -
Kotlin中的@JvmOverloads
Normally, if you write a Kotlin function with default parameter values, it will be visible in Java only as a full signature, with all parameters present. If you wish to expose multiple overloads to J...原创 2018-12-18 16:45:24 · 580 阅读 · 0 评论 -
React Native接入现有Android原生工程并实现简单的RN与Android通信
对于一个新的工程,可以直接使用React Native进行开发,但是对于现有的项目如果全面改造将会是一项巨大的工程。好在RN提供了方式为我们接入现有工程。同时,对于Android中的一些组件,RN不一定有已经继承的实现方式,我们可以通过实现ReactMethod的方式实现RN使用Android原生组件。1. 接入React Native1. RN开发环境准备及Android原生项目这里不再赘...原创 2018-12-11 10:25:54 · 1017 阅读 · 0 评论 -
Kotlin的let、with、run、apply、also
作用域函数Kotlin中提供了一系列的作用域函数,这些函数写起来很简单,但是提供的功能很强大。他们是带接受者的Lambda。不过对于Lambda有一点需要注意:在lambda表达式,只支持单抽象方法模型,也就是说设计的接口里面只有一个抽象的方法,才符合lambda表达式的规则,多个回调方法不支持。letlet扩展函数的实际上是一个作用域函数,当你需要去定义一个变量在一个特定的作用域范围内,l...转载 2018-12-06 17:36:51 · 347 阅读 · 1 评论 -
React Native与Android原生之间的通讯
React Native与Android原生之间的通讯在React Native中可以通过在java层自定义@ReactMethod方式给JavaScript调用,这样在JavaScript层就可以直接调用Android中的Native方法。但是很多场景下需要我们去回调获取结果。这时候就需要实现RN与原生之间的通讯。对于RN与Android原生之间的通讯,主要有以下几种方式帮助我们来实现:...原创 2018-12-13 16:02:42 · 956 阅读 · 0 评论 -
MobX的一些总结
MobXMobX通过透明的函数响应式编程,使得其成为一种简单、可扩展的状态管理工具。使用MobX可以将应用编程响应式的编程方式。其背后的原理是:任何源自应用状态的东⻄都应该自动地获得。React和MobX是一对强力组合。React通过提高机制把应用状态转换为可渲染组件树并对其进行渲染;MobX提供机制来存储和更新应用状态供React使用。1. 概念MobX主要区分了概念:Stat...原创 2018-12-13 14:35:45 · 946 阅读 · 0 评论 -
Git的一些总结
Git 版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。 而对于Git这样的分布式版本控制系统 ,客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来。这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。因为每一次的提取操作,实际上都是一次对代码仓库的完整备份 。1. 初次运行 Git 前的配置G...转载 2018-07-11 15:33:41 · 163 阅读 · 0 评论 -
Android Apk打包的流程
APK是Android Package的缩写,即Android安装包(apk)。通过将APK文件直接传到Android模拟器或Android手机中执行即可安装。APK文件基于 zip 文件格式,它与 jar 文件的构造方式相似。1. APK包中有些什么 文件名称 文件类型 文件作用 classes.dex 文件 java源文件经过编译和转换后生...原创 2018-04-24 14:53:31 · 629 阅读 · 0 评论 -
Android TabLayout 的一些小问题
在做项目时,遇到一个问题,有时候在tabLayout.setupWithViewPager(viewPager)前设置标题到后来可能就变成空白的,不显示Tab的title,解决了很久都不行。结果研究,有两种方法来解决问题:在tabLayout.setupWithViewPager(viewPager)手动重新添加标题,这里不再赘述;重写adapter中的getPageTitlea...原创 2018-04-13 14:56:34 · 618 阅读 · 0 评论 -
Android RecyclerView和ListView的异同
1. ViewHolderViewHolder是用来保存视图引用的类,无论是ListView亦或是RecyclerView。在ListView中,ViewHolder需要自己来定义,且这只是一种推荐的使用方式,不使用当然也可以,这不是必须的。只不过不使用ViewHolder的话,ListView每次getView的时候都会调用findViewById(int),这将导致ListView性...转载 2018-04-07 11:03:34 · 3082 阅读 · 0 评论 -
Android 责任链模式
1. 概念是一个请求有多个对象来处理,这些对象是一条链,但具体由哪个对象来处理,根据条件判断来确定,如果不能处理会传递给链中的下一个对象,直到有对象处理它为止。2. 使用场景有多个对象可以处理同一个请求,具体哪个对象处理该请求待运行时刻再确定;在不明确指定接受者的情况下,向多个对象中的一个提交一个请求;可动态指定一组对象处理请求,客户端可以动态创建责任链来处理请求。...原创 2018-04-08 14:10:29 · 217 阅读 · 0 评论 -
GridView & BaseAdapter设置四宫格的一些问题
最近在项目中需要在主页中设置一个四宫格的页面, 于是就使用了GrideView与BaseAdapter的组合,但是完成后它会滑动,并不是固定的,而且它也不是适应其父容器大小设置的.要解决这个问题,我在BaseAdapter的getView中重写了item的大小:@Override public View getView(int i, View view, ViewGroup v...原创 2018-03-19 14:23:21 · 443 阅读 · 0 评论 -
Android Binder
Binder是Android系统中进程间通讯(IPC)的一种方式,也是Android系统中最重要的特性之一。Android中的四大组件Activity,Service,Broadcast,ContentProvider,不同的App等都运行在不同的进程中,它是这些进程间通讯的桥梁。1. Binder通信机制1.1 一些思考 用户空间/内核空间: Ke...原创 2018-02-17 12:05:30 · 1485 阅读 · 0 评论 -
Android BroadCast
Android apps can send or receive broadcast messages from the Android system and other Android apps, similar to the publish-subscribe design pattern. These broadcasts are sent when an event of inter...原创 2018-02-16 11:27:18 · 180 阅读 · 0 评论 -
Android Service
Service是一个可以在后台执行长时间运行操作而不提供用户界面的应用组件。服务可由其他应用组件启动,而且即使用户切换到其他应用,服务仍将在后台继续运行。 此外,组件可以绑定到服务,以与之进行交互,甚至是执行进程间通信 (IPC)。 例如,服务可以处理网络事务、播放音乐,执行文件 I/O 或与内容提供程序交互,而所有这一切均可在后台进行。 - 作用:提供需在后台长期运行的服务 -...原创 2018-02-15 12:04:28 · 177 阅读 · 0 评论 -
Android Fragment
Fragment表示 Activity中的行为或用户界面部分。您可以将多个片段组合在一个 Activity 中来构建多窗格 UI,以及在多个 Activity 中重复使用某个片段。您可以将片段视为 Activity 的模块化组成部分,它具有自己的生命周期,能接收自己的输入事件,并且您可以在 Activity 运行时添加或移除片段(有点像您可以在不同 Activity 中重复使用的“子 Act...原创 2018-02-14 11:48:04 · 140 阅读 · 0 评论 -
Android Activity
Activity是一个应用组件,用户可与其提供的屏幕进行交互,以执行拨打电话、拍摄照片、发送电子邮件或查看地图等操作。 每个 Activity 都会获得一个用于绘制其用户界面的窗口。窗口通常会充满屏幕,但也可小于屏幕并浮动在其他窗口之上。一个应用通常由多个彼此松散联系的 Activity 组成。 一般会指定应用中的某个 Activity 为“主”Activity,即首次启动应用时呈现给...原创 2018-02-14 09:22:56 · 209 阅读 · 0 评论 -
ButterKnife
Field and method binding for Android views which uses annotation processing to generate boilerplate code for you. Eliminate findViewById calls by using @BindView on fields. Group multip...原创 2018-02-13 22:35:36 · 157 阅读 · 0 评论 -
Android 内存管理
Android系统是基于Linux 2.6内核开发的开源操作系统,而linux系统的内存管理有其独特的动态存储管理机制。 不过Android系统对Linux的内存管理机制进行了优化,Linux系统会在进程活动停止后就结束该进程,而Android把这些进程都保留在内存中,直到系统需要更多内存为止。这些保留在内存中的进程通常情况下不会影响整体系统的运行速度,并且当用户再次激活这些进程时,提...原创 2018-02-27 13:35:48 · 199 阅读 · 0 评论 -
Android学习的第六周笔记
1.JsonIn computing, JSON is an open-standard format that uses human-readable text to transmit data objects consisting of attribute–value pairs. It is the most common data format used for asynchronou转载 2016-11-12 09:49:41 · 353 阅读 · 0 评论 -
Android学习的第一周笔记
本人是一个安卓小白,学习了安卓一周,记下了一些笔记,虽不精,但求正确。1. What is Android StudioAndroid Studio is the official integrated development environment (IDE) for Android platform development.Based on JetBrains' Intel原创 2016-10-05 09:09:38 · 457 阅读 · 0 评论 -
Android学习的第五周笔记
1. SQLiteandroid.database.sqliteContains the SQLite database management classes that an application would use to manage its own private database.Applications use these classes to manage转载 2016-11-06 22:41:26 · 241 阅读 · 0 评论 -
Android学习的第二周笔记
1. Android布局(1)线性布局(LinearLayout):按照垂直或者水平方向布局的组件。这种布局比较常用,也比较简单,就是每个元素占一行,当然也可能声明为横向排放,也就是每个元素占一列。LinearLayout按照垂直或者水平的顺序依次排列子元素,每一个子元素都位于前一个元素之后。如果是垂直排列,那么将是一个N行单列的结构,每一行只会有一个元素,而不论这个元素的原创 2016-10-13 18:53:50 · 332 阅读 · 0 评论 -
Android开源框架——OkHttp
An HTTP & HTTP/2 client for Android and Java applications. 一个处理网络请求的开源项目,是安卓端最火热的轻量级框架,由移动支付Square公司贡献。1. 知识回顾1.1 HTTP协议及特点HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维...原创 2018-02-18 22:55:59 · 341 阅读 · 0 评论 -
Android View
1. View绘制机制1.1 View树的绘制流程判断是否需要重新计算视图大小(measure)是否重新需要安置视图的位置(layout)是否需要重绘(draw)1.2 measuremesarue():树形递归过程作用:为整个view树计算实际大小 -> 设置实际的宽高【mMeasuredHeight, mMeasureWidth】 每个vi...转载 2018-02-19 13:31:09 · 156 阅读 · 0 评论 -
Android Lint
Android Studio 提供一个名为 Lint 的代码扫描工具,可帮助您发现并纠正代码结构质量的问题,而无需实际执行该应用,也不必编写测试用例。该工具会报告其检测到的每个问题并提供该问题的描述消息和严重级别,以便您可以快速确定需要优先进行哪些关键改进。此外,您可以调低问题的严重级别,忽略与项目无关的问题,也可以调高严重级别,以突出特定问题。Android Lint是一个静态代码分...转载 2018-03-04 09:38:06 · 167 阅读 · 0 评论