- 博客(40)
- 收藏
- 关注
翻译 10、测试你的 Content Provider
测试你的 Content Provider如果您正在实现一个 content provider 来存储和获取数据或者使数据可以被其他应用访问,你应该测试你的 provider 来确保他不以意外的方式运行。
2017-12-21 00:19:54 462 1
翻译 9、测试你的 Service
测试你的 Service如果您正在将一个本地 Service 作为您的应用程序中的一个组件实现,你应该测试这个 Service 以确保他不会以意外的方式运行。你可以创建一个 instrumented 单元测试 来验证 Service 的行为是否正确;
2017-12-21 00:18:49 852
翻译 8、测试应用程序组件集成
测试应用程序组件集成如果您的应用使用了那些用户不直接交互的组件,例如 Service 或者 Content Provider,你应该验证这些组件是否以正确的方式在您的应用程序中运行。当开发这类组件的时候,您应该养成编写集成化测试的习惯以便在您的应用程序在设备或者模拟器上运行时验证这些组件的行为。
2017-12-21 00:17:43 287
翻译 7、跨多个应用程序的 UI 测试
跨多个应用程序的UI测试涉及跨多个应用程序交互的用户界面(UI)测试使您可以验证您的应用程序在用户流程跨越其他应用程序或进入系统UI时的行为。
2017-12-21 00:17:01 811
翻译 6、单个应用的UI测试
单个应用的UI测试测试单个应用中的用户交互可以帮助我们确保用户在使用使用应用 时不会遇到一些意想不到的结果或者遇到糟糕的用户体验。如果你需要验证你的应用的 UI 功能正确,你应该养成创建用户界面(UI)测试的习惯。Android 测试支持库 提供的 Espresso 测试框架,提供了用于编写UI测试以模仿目标App中的用户交互的API。
2017-12-21 00:13:14 429
翻译 5、自动化用户界面测试
自动化用户界面测试用户界面测试可以确保您的应用满足它的功能需求并且达到一个高质量标准,从而更有可能被用户成功使用。进行 UI 测试的一个简单的方法就是让一个测试人员在目标应用上执行一系列用户操作来验证是否运行正确。然而,这种人工的方法是耗时的,繁琐并且容易出错的。一个更有效的方法就是编写UI测试,从而以自动化的形式执行用户操作。
2017-12-20 00:33:00 898
翻译 4、构建 Instrumented 单元测试
构建 Instrumented 单元测试Instremented 单元测试是运行在物理设备或者模拟器上的测试,他们可以利用 Android 框架的 API 和支持的 API ,例如 Android 测试支持库。
2017-12-20 00:28:55 616
翻译 3、构建本地单元测试
如果您的单元测试没有依赖关系或者仅仅简单的依赖 Android ,你应该将你的测试运行在本地的开发机器上。这种测试方式是高效的,因为他避免了每次将目标应用和单元测试代码运行到物理设备或者模拟器上的开销。因此运行单元测试的时间将大大减少。
2017-12-20 00:21:53 437
翻译 2、构建有效的单元测试
构建有效的单元测试单元测试是你的 App 测试策略中最基本的测试。通过根据你的代码创建并运行的单元测试,你可以很轻松的验证单个单元的逻辑是否正确。每次构建后运行的单元测试可以帮助你很快的捕获并修复由于代码修改而引入到你的 App 中的软件回归。单元测试通常以可重复的方式执行最小可能的代码单元的功能(可能是一个方法,类,或者是组件)。
2017-12-20 00:15:59 302
翻译 1、测试基础
测试基础用户与 App 有很多不同水平的交互,从点击一个提交按钮到向设备上下载信息。因此,你应该在你迭代开发你的App 时测试各种各样的使用场景和交互。使用迭代开发工作流程随着你的App的拓展,你应该会发现从服务器获取数据,与设备的传感器交互,访问本地存储,或者渲染复杂的界面都是必要的。因此你的多功能的 App 需要一种全面的测试策略。
2017-12-20 00:07:51 251
原创 ViewPager实现图片轮播
图片轮播几乎是每个APP都会用到的功能,在这篇文章我用ViewPager实现一下这个功能。先看一下最后的效果支持左右两边图片轮流滑动,并且两秒自动滑动
2016-08-11 17:53:29 1121 2
原创 Activity的启动模式
基本介绍启动模式(LaunchMode)在多个Activity跳转之间扮演着重要的角色,他决定是否生成一个新的实例,是否重用已经存在的实例,是否和其他activity实例放在同一个task中。task:android使用任务(task)来管理活动,一个任务就是一组放在栈中的集合,这个栈也被称为返回栈(Back Stack)栈是一种先进后出的数据结构,默认情况下,当我们启动了一个新的activity时
2016-07-06 12:47:14 462
原创 Android ButterKnife框架学习
基本介绍使用@BindView注解,并传入控件Id,ButterKnife就可以自动的找到布局中相对应的控件并且绑定到类成员上
2016-07-05 17:33:48 683
原创 TabLayout使用
先上效果图主要用到了ViewPager,TableLayout,Fragment的组合首先,要使用TabLayout必须在AndroidStudio中导入这个依赖库compile 'com.android.support:design:23.1.1'主界面的布局一个TabLayout和一个ViewPager<?xml version="1.0" encoding="utf-8"?><Linea
2016-07-01 14:24:26 2041
原创 SwipeRefreshLayout实现下拉刷新
SwipeRefreshLayout是Google自己的下拉刷新控件,使用很简单,只要将SwipeRefreshLayout包裹在需要刷新的控件上就行
2016-06-28 17:27:15 1599
原创 DrawerLayout的学习(与ToolBar结合)
什么是DrawerLayout官方文档是这样说的 The navigation drawer is a panel that displays the app’s main navigation options on the left edge of the screen. It is hidden most of the time, but is revealed when the user s
2016-06-18 13:51:04 639
原创 ToolBar的学习
ToolBar是什么ToolBar是在Android 5.0之后开始推出的一个具有Material Design的导航栏控件。Google非常推荐开发者使用ToolBar作为安卓客户端的导航栏,以此来取代ActionBar。它不像ActionBar一样必须固定在Activity的顶端,他可以放置在任何位置。而且Google在设计ToolBar的时候,还给开发者留了很多可供修改的地方,如设置导航栏图
2016-06-17 17:32:09 449
原创 Android开源框架android-async-http的学习
Android-async-http的地址http://loopj.com/android-async-http/官方的解释是这样的:An asynchronous callback-based Http client for Android built on top of Apache’s HttpClient libraries. All requests are made outside of
2016-06-16 18:13:58 541
原创 Android开源框架 universal-Image-Loader
universal-Image-Loader在做安卓开发的时候,肯定会接触到异步夹在图片或者大量加载图片的情况。作为新手肯定会遇到很多问题,如OOM或者图片错误等问题。因此有许多图片加载的开源框架供我们使用,今天学习一下universal-Image-Loader框架。
2016-06-15 21:16:48 450
原创 Android Application类的学习
Application是什么Application和Activity、Service一样是系统框架的组件,当程序启动时会自动创建一个Application对象,用来保存一些系统信息。Android系统会为每个程序启动时会创建一个Application对象且只创建一个,因此Application类可以说是单例模式(singleton)的一个类。
2016-06-15 00:15:48 569
原创 生产者与消费者问题,java实现
import java.util.concurrent.Semaphore;public class OSTest01 { public static void main(String[] args) { // 启动线程 for (int i = 0; i <= 3; i++) { // 生产者线程
2016-06-12 21:17:25 497
原创 Serializable和Pacerlable
使用Intent传递数据对象时通常有两种实现方式,Serializable和Pacerlable。SerializableSerializable是序列化的意思,表示将一个对象转换成可存储或可传输的状态。序列化后的对象可以在网络上进行传输,也可以保存在本地。序列化的方式也很简单,只需要需要序列化的类去实现Serializable接口就行了。
2016-06-10 15:19:06 367
原创 HttpURLConnection的封装以及Callback的使用
由于很多时候都需要进行网络访问,而且很多都是一样的,所以封装起来使用会更方便一些,并且由于网络访问不能在主线程进行,所以还需要开启一个子线程,但是由于子线程是在public void run 方法里面执行的,所以无法返回访问的内容,因此这时候就需要用到Callback了,定义一个接口叫HttpCallback,定义两个抽象方法,一个是访问成功时调用,一个是出现异常时调用。public interfa
2016-06-05 21:02:55 3484
原创 Android AsyncTask的使用
AsyncTask方便我们在子线程进行耗时操作,并且方便切换到UI线程进行更新UI,不需要再使用Handler等在子线程与主线程之间进行通信了。AsyncTask的基本用法AsyncTask是一个抽象类,因此使用它就要写一个类继承它,继承的时候需要指定三个泛型参数Params 在执行后台任务时需要传入的参数类型,doInbackground()方法的参数Progress 如果需要在界面上显
2016-06-05 15:51:09 429
原创 Git的使用01
配置身份打开Git Bash,输入如下命令 git config –global user.name “FreshXu” git config –global user.email “freshxu110@163.com” 即可配置身份,同样输入如下命令可查看信息 git config –global user.name git config –global user.email
2016-06-05 00:07:17 464 1
原创 内容提供者,ContentProvider的使用
这个例子是结合在前面写的sqlite数据库地址在这里加上ContentProvider,使别的应用程序可以访问它的数据,使用ContentProvider需要继承ContentProvider,然后重写六个方法onCreate() 初始化内容提供器的时候调用。通常会在这里完成对数据库的创建和升级等操作,返回 true 表示内容提供器初始化成功,返回 false 则表示失败。注意,只有当存在Con
2016-06-04 15:59:28 478
原创 IntentService的使用
为什么用IntentService我们知道服务是在后台运行的,但是它本身存在两个问题:Service不会专门去启动一个新的进程,它与所在的应用属于同一个进程Service也不会专门去启动一个新的线程,它运行在主线程之中但是有的时候Service需要执行一些耗时操作,比如下载等,由于Service是在主线程中运行的,我们知道,如果主线程堵塞,会引发ANR,因此我们可以在Service中开启一个新的
2016-06-03 19:50:59 589 2
原创 android四大组件---Service的简单使用
服务是什么服务(Service)是Android中实现后台运行程序的解决方案,他非常适合用于那些不需要和用户进行交互的并且需要长期运行的任务,即使用户打开了另一个应用程序,程序被切到了后台,服务依然能够运行。需要注意的是服务的运行并不是再一个新的线程中,而是在主线程中运行的。服务的基本用法
2016-06-02 21:24:34 471
原创 android SQLite数据库的使用
android提供了一个抽象类SQLiteOpenHelper用来管理数据库,因此我们需要创建一个类来继承它,并且重写他的两个方法onCreate()(创建数据库)和onUpgrade()(更新数据库)。他还有两个重要的实例方法,这两个方法都可一创建或打开一个数据库,并且返回一个可读写的数据库对象,区别是如果数据库不可写入时:getReadableDatabase() 返回一个只可读的g
2016-05-24 16:07:20 583
原创 android 文件存储以及SharedPreferences存储以及模拟记住密码
1、文件存储文件存储是android最基本的一种数据存储方式,他不会对存储的内容进行任何格式化的处理,所有数据都原封不动的保存在文件当中。1.1 将数据存储到文件当中Context类提供了一个openFileOutput()方法,该方法接受两个参数,第一个是创建的文件名,不可以包含路径,默认存储在data/data//files/目录下。第二个参数是文件的操作模式,有两种可选,MODE
2016-05-23 11:08:12 802
原创 android json数据的解析
JSON是什么JSON是JvaScript Object Natation,是一种轻量级的数据交换格式JSON的语法1、数据在名称/值对中 "name":"Kobe"2、数据由逗号分割 "name":"Kobe","team":"Lakers"3、花括号{}表示对象 "star":{"name":"Kobe","team":"Lakers"}4
2016-05-22 16:20:03 312
原创 Broadcast学习--模仿qq强制下线功能
在该例子中,我会实现一个简单的登录功能,登陆成功后点击按钮发送一条强制下线的广播,在广播接收器中进行处理,弹出对话框要求用户强制下线,并跳转到登陆界面。通过该例子主要学习如何发送自定义广播以及如何接收广播并进行处理。
2016-05-21 14:57:46 1278
原创 自定义BaseActivity和ActivityManager
为了方便使用和管理Activity,于是建立两个类,一个抽象类BaseActivity作为所有activity的父类,一个ActivityManager用力管理activity,可作为以后项目的基类
2016-05-21 13:14:20 1063
原创 WebView,HttpURLConnection,HttpClient的简单使用
1、WebView的简单使用安卓程序有的需要浏览网页,因此android提供了一个控件叫WebView,话不多说,直接使用界面布局代码,就显示一个WebView<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.and
2016-05-18 19:39:22 548
原创 android ListView的简单使用与优化
ListView顾名思义是显示列表的控件,几乎每个App都会使用到ListView,当需要展示大量的数据时就需要用到ListView.在本文我会用ListView模仿虎扑做一个简单的NBA球星得分排行榜 首先我们在布局文件中定义一个ListView<Relative
2016-05-15 20:56:43 1161 1
原创 android模拟NBA西决比赛!
本来我是在学习HandlerThread和Handler的post方法的,然后正好今天NBA雷霆晋级,西部决赛将对阵勇士队!肯定很激烈啊!于是我就突然想用代码模拟一下西部决赛,既学习了安卓又预测了比赛,不多说,先上图
2016-05-13 21:02:40 699
原创 Handler,Looper,Message,MessageQueue,HandlerThread使用总结(上)
我们都知道,android的UI操作并不是线程安全的,因此如果多个线程同时操作UI的话,会导致线程安全问题,因此android制订了一条规则,只允许UI线程(即主线程)进行UI操作,而且由于一些耗时操作例如下载,网络访问等,如果放在主线程执行,这样可能会抛出一个异常 ANR异常(Application Not Responding)将会阻塞UI线程,从而会导致程序无响应。因此我们会将一些耗时操
2016-05-12 17:03:53 3430 2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人