自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 Android应用层View绘制流程与源码分析

转自https://blog.csdn.net/yanbober/article/details/461283791 背景还记得前面《Android应用setContentView与LayoutInflater加载解析机制源码分析》这篇文章吗?我们有分析到Activity中界面加载显示的基本流程原理,记不记得最终分析结果就是下面的关系:看见没有,如上图中id为content的内容就是整个...

2018-12-17 14:45:07 475

原创 Windows7下安装Linux双操作系统

最近正在学习Linux系统的常用操作命令,于是心血来潮,想自己安装一个Linux系统实践一下,在网上找了半天资料,终于在自己的电脑上成功安装了,实现了Windows+Linux双系统,将自己的安装过程记录了下来。这里安装的是Ubuntu-1604.3操作系统,下载地址:https://www.ubuntu.com/download/desktop下载完成后是一个.iso的镜像文件,需要刻录到光盘上或

2017-11-19 19:21:10 64894 15

原创 Appium+Python自动化测试(二)--运行App程序示例

在上一篇博客中,已经将环境搭建好了。现在,我们利用搭建的环境来运行一条测试脚本,脚本中启动一个计算器的应用,并实现加法的运算。创建模拟器在运行App之前,首先需要创建一个Android模拟器,也可以使用真机来运行,效果更佳。进到Android SDK的目录,双击运行AVD Manager.exe点击Create创建一个Android模拟器输入一个模拟器名称,选择设备类型和API版本,点击进行创建。创

2017-08-08 23:06:29 39497 11

原创 Appium+Python自动化测试(一)--环境搭建

Appium简介Appium是一个自动化测试开源工具,支持IOS和Android平台上的移动原生应用、移动Web应用和混合应用。所谓的“移动原生应用”是指那些用IOS或者Android SDK写的应用;所谓的“移动Web应用”是指使用移动浏览器方位的应用(Appium支持IOS上的Safari和Android上的Chrome);所谓的“混合应用”是指原生代码封装网页视图(原生代码和Web内容交互)。

2017-08-06 16:52:28 18546 1

原创 selenium+python自动化测试(五)--多窗口切换

在很多页面上都有可点击的链接,点击这些链接会打开一个新的窗口,这时如果要在新打开的窗口中操作页面,就需要先切换到新窗口中,如果不进行切换操作,还是操作的上一个页面窗口浏览器窗口的切换通过句柄(handle)来操作,每个窗口都有一个句柄,代表当前窗口,需要操作哪个页面的窗口,切换到窗口对应的句柄。通过driver.switch_to.window(handle)来切换句柄在新的窗口中打开页面打开百度首

2017-08-06 14:36:08 9977 1

原创 selenium+python自动化测试(四)--鼠标和键盘事件

前面的例子中,点击事件都是通过click()方法实现鼠标的点击事件。其实在WebDriver中,提供了许多鼠标操作的方法,这些操作方法都封装在ActionChains类中,包括鼠标右击、双击、悬停和鼠标拖动等功能。ActionChains类提供的鼠标操作事件context_click():点击鼠标右键double_click():双击鼠标drag_and_drop():拖动鼠标move_to

2017-08-06 13:41:15 8299

原创 selenium+python自动化测试(三)--页面元素定位

上一篇博客selenium+python自动化测试(二)–使用webdriver操作浏览器讲解了使用webdriver操作浏览器的各种方法,可以实现对浏览器进行操作了,接下来就是对浏览器页面中的元素进行操作,操作页面元素,首先要找到操作的元素,对元素进行定位查看页面源码要定位页面元素,需要找到页面的源码,IE浏览器中,打开页面后,在页面上点击鼠标右键,会有“查看源代码”的选项,点击后就会进入页面源码

2017-07-30 11:54:01 9075

原创 selenium+python自动化测试(二)--使用webdriver操作浏览器

WebDriver简介selenium从2.0开始集成了webdriver的API,提供了更简单,更简洁的编程接口。selenium webdriver的目标是提供一个设计良好的面向对象的API,提供了更好的支持进行web-app测试。从这篇博客开始,将学习使用如何使用python调用webdriver框架对浏览器进行一系列的操作打开浏览器在selenium+python自动化测试(一)–环境搭建中

2017-07-29 23:11:28 15006 1

原创 selenium+python自动化测试(一)--环境搭建

最近由于公司有一个向谷歌网站上传文件的需求,需要进行web的自动化测试,选择了selenium这个自动化测试框架,以前没有接触过这门技术,所以研究了一下,使用python来实现自动化脚本,从环境搭建到实现脚本运行。selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla

2017-07-23 21:52:27 8124 4

原创 响应式编程--Android Rxjava的使用(一)

RxJava作为一个响应式编程库,在Android开发者中非常的受欢迎,越来越多的人开始接触并使用,作为一个Android开发的菜鸟,仔细研究了一下RxJava的知识,在此将一些学习的过程和心得记录一下首先介绍一下RxJava相关的概念ReactiveXReactiveX 是一个专注于异步编程与控制可观察数据(或者事件)流的API。它组合了观察者模式,迭代器模式和函数式编程的优秀思想。RxJavaR

2017-07-23 11:23:31 712

翻译 Kotlin基础知识

本文翻译自Kotlin官方学习文档:https://kotlinlang.org/docs/kotlin-docs.pdf基础类型在Kotlin语言中,可以从任何变量调用成员方法和属性,从这一点来说,任何事物都是对象。一些类型是内置对象,因为它们的实现经过优化,但对于用户来说,它们就和普通的类一样。在这一节中,我们将这些类型的大部分描述为:数字类型,字符类型,布尔类型和数组类型数字类型Kotli

2017-06-25 12:08:03 518

翻译 Kotlin入门指南

从本篇博客开始,将介绍Kotlin官方文档的内容。本文翻译自Kotlin官方学习文档:https://kotlinlang.org/docs/kotlin-docs.pdf基础语法包定义包声明应该在源文件的顶部package my.demoimport java.util.*// ...并不要求目录和包匹配:源文件可以在文件系统的任何地方详见Packages方法定义具有两个Int类型参数和Int类

2017-06-18 15:42:52 1257

翻译 Kotlin语言概述

最近发现Kotlin在各大论坛成为了一个很火热的话题,抽空了解了一下这个语言。2017年谷歌I/O大会上,谷歌宣布将Kotlin作为Android编程的一级开发语言。Kotlin由JetBrains公司开发,与Java 100%互通,并具备诸多Java尚不支持的新特性,目前已经开源。Github上也有越来越多的项目使用Kotlin开发。在大会上同时发布的还有Android Studio3.0金丝雀版

2017-06-18 14:09:45 843

原创 Android中内存泄漏的发生原因及优化

在Android开发中,当一个对象已经不需要再使用了,本该被回收时,而另一个正在使用的对象持有它的引用,从而导致它不能被回收,占用的内存没有被释放,这样就会产生内存泄漏。内存泄漏是一个很容易发生的问题,而且也不像程序ANR和Crash那样容易定位。内存泄漏问题对一个开发人员的经验和开发技能有较高的要求,这也是开发人员最容易犯的错误之一。内存泄漏的优化主要包括两个方面。一是避免在开发过程中写出可能会发

2017-06-18 02:22:49 585

原创 创建线程的另一种方法-使用Android线程池

在开发过程中,经常会使用到线程,一般使用Thread或Runnable来创建一个线程,使用这种方式创建的线程并不能被重复利用。当应用程序中创建的线程对象太多时,随之而来的是由于创建和销毁线程所带来的性能开销,多线程的并发也会因互相抢占系统资源而导致程序阻塞。使用线程池可以避免这些问题,总的来说,线程池有以下几点好处1、重用线程池中的线程,避免因为线程创建和销毁带来的性能开销 2、有效的控制线程的最

2017-06-15 22:35:28 594

原创 UI线程和非UI线程的交互方式

Android的UI线程负责处理用户的按键事件、触摸事件及屏幕绘制等,在UI线程中不可以有耗时操作阻塞事件的响应,这样会导致界面变得不流畅,甚至会出现没有响应的情况,这就是所谓的ANR(Application Not Responding)。一般应该把像读写文件、请求网络这类的耗时操作放在子线程中去执行,这样可以避免UI线程的响应事件过慢,但是很多情况下在子线程中需要更新界面,比如从网络中获取到图片

2017-06-11 19:37:17 1295

原创 Android多线程之AsyncTask

AsyncTask是一种轻量级的异步任务类,不需要借助线程Handler就可以实现,它是在线程池中执行任务,然后把执行的进度和返回结果传递给主线程,在主线程中更新UIAsyncTask是一个抽象类,定义了3个泛型参数:Param:启动任务时需要传入的参数类型Progress:后台任务完成进度的参数类型Result:任务执行完毕后返回的结果类型使用AsyncTask的方法如下:1、定义Asyn

2017-06-11 16:40:49 602

原创 使用startForeground()创建前台Service

Service默认是运行在后台的,意味着系统如果需要回收内存的话,就可能会杀掉后台的服务,如果某个Service被杀掉对用户具有很大影响的话,可以把Service设置成前台的,这样的Service优先级会比较高,被杀掉的概率也会很低。比如正在后台播放音乐的Service,如果被杀掉,音乐会停止播放,这样用户就会注意到。所以可以看到许多音乐播放器在后台运行的时候,会在下拉的通知栏上有正在运行的通知显示

2017-06-04 17:40:14 14780 1

原创 Activity和Service的交互方式

在开发过程中,经常会遇到Activity和Service进行相互通信、交换数据的需要,最常见的比如音乐播放器,使用Service在后台进行音乐播放,前台使用Activity显示界面,点击前台控件后需要告知Service,控制音乐的播放、暂停、切换下一首等,后台Service再将数据传给Activity来改变界面显示Activity和Service的交互方式主要有以下几种通过广播进行交互通过共享文

2017-06-04 02:31:45 11261

原创 IntentService执行耗时任务及源码解析

IntentService是一种特殊的Service,它继承了Service,是一个抽象类。普通的Service与它所在的应用处于同一个进程,Service也不是一条新的线程,所以不可以在Service中直接处理耗时的任务。IntentService使用单独的线程来处理任务,可以用来处理耗时任务,任务执行后会自动停止。而且由于是服务的原因,所以比单独的线程优先级高,不容易被杀死。IntentServ

2017-05-29 19:14:21 833

原创 ListView的两种多选模式

在上篇博客中,详细记录了ListView的各种用法,本篇博客主要用于探究ListView的两种多选模式。在上篇博客的结尾,说到在多选模式中,ListView选中的列表项都保存在一个SparseBooleanArray中,利用ListView的列表是否被选中的状态,可以突出显示被选中的项,比如给选中的列表项设置背景色布局文件依然是只有一个ListView<RelativeLayout xmlns:an

2017-05-29 15:50:56 9262

原创 ListView控件功能全解析

ListView是Android手机系统中使用非常频繁的控件,以垂直列表的形式显示数据项,ListView的用法也较为复杂,下面将详细介绍ListView相关的各种用法。1、创建使用ListView有2种方式创建ListView在布局文件中使用ListView创建<ListView android:id="@+id/list" android:layout_wi

2017-05-29 00:28:20 4098

原创 Activity的创建与销毁、数据的保存和启动模式分析

一直对Activity的各种生命周期方法、创建和销毁时机以及Activity的4种启动模式没有彻底的了解清楚,详细整理记录一下这些知识,以后哪再不清楚时不会再到处查阅资料了。首先,从网上拷过来一张图片,对这张图片,相信很多人都非常熟悉,它包括了Activity从创建到销毁的全部过程,如下图所示:1、Activity的创建与销毁从Activity的创建开始说起,当启动一个Activity时,生命周期

2017-05-15 22:39:11 1538

原创 AIDL Service实现跨进程通信

AIDL Service用于在不同进程间进行数据交换,即所谓的跨进程通信(interprocess communication,简称IPC)与绑定本地Service不同的是,本地Service的onBind()方法会直接把IBinder对象本身传给客户端的ServiceConnection的onServiceConnected()方法的第二个参数。但远程Service的onBind()方法只是将IB

2017-05-14 01:36:54 2513

原创 使用Universal-Image-Loader框架加载图片

使用Universal-Image-Loader框架加载图片Github下载地址:http://github.com/nostra13/Android-Universal-Image-Loader下载后,新建工程,将jar导入到工程的libs目录中。加载网络图片1、初始化ImageLoader新建类继承Application,在Application的onCreate()方法中初始化ImageLoa

2017-03-25 19:08:30 645

空空如也

空空如也

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

TA关注的人

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