自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

藏余地的专栏

码农的路上,不想太孤独~

  • 博客(67)
  • 资源 (1)
  • 收藏
  • 关注

原创 【Android 进阶(一)】Android MVP框架实现过程

MVP框架实现过程目的:View层和Model层分离,中间由Presenter处理逻辑。Prester作为View与Model交互的中间纽带,处理与用户交互的负责逻辑。这里我们只说明View和Presenter的交互, Model与Presenter与前者大致相同,甚至可以直接略过接口直接使用,因此不再赘述。我们期望减少在Activity,Fragment类的容量,使View层专心View的实现,

2015-12-15 00:14:53 2360

原创 【Android 个人理解(十)】客户端设计之数据分类和存储

@有待继续理解,纯属个人感悟。在Android 客户端设计过程中,我将数据分为未知,已知(本地),临时,三者之间根据需求相互转化。未知主要来自用户输入和服务端输入。已知主要来自sharedPerferences,SQLite等本地存储。临时主要是指存在于当前内存中的数据。在程序运行后,来自于前两种方式,随载体的生命周期开始,结束。(这里主要放在Application中的数据)有些数据,我习惯

2015-12-01 15:39:34 556

原创 【知识点整理(java)】Java Thread简单使用注意点汇总(四)

一、守护线程当线程对象调用setDaemon()方法,该线程设置为守护线程。 线程对象A,B。在A中,B调用setDaemon()方法,B为A的守护线程,A结束时,B自动结束,无论B的状态。二、join方法临时加入线程。main{ t1.start(); t2.start(); t1.join();}此时main线程,让出执行权,睡眠。此

2015-10-25 21:55:36 504

原创 【知识点整理(java)】Java Thread简单使用注意点汇总(三)

一、Lock接口二、线程的结束

2015-10-25 19:09:38 448

原创 【知识点整理(Java)】Java Thread简单使用注意点汇总(二)

一、处理多线程的步骤确定同步前提用synchronized解决安全问题用线程通信解决逻辑顺序二、有关锁的问题

2015-10-25 14:51:54 367

原创 【知识点整理(Java)】Java Thread 简单使用注意点汇总(一)

Java Thread简单使用注意点汇总(一)一、实现多线程的方式:继承Thread类或者实现Runable方法。二、Thread类的run和start方法的区别:run()称为线程体,调用run()方法,方法当作普通方法的方式调用。程序还是要顺序执行,要等待run方法体执行完毕后,才可继续执行下面的代码; 程序中只有主线程。start()方法来启动线程,真正实现了多线程运行。三、多线程的运行状态:

2015-10-23 15:16:27 490

原创 Google浏览器调试app -- Stetho(可调试网络,资源)

Stetho Study一、Stetho概述二、如何使我们的app的信息输入到Chrome上环境配置首先添加依赖:dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.facebook.stetho:stetho:1.0.1' compile

2015-09-04 13:29:27 2481

原创 Android Studio下构建Maven私服

Android Studio下构建Maven私服对Maven的理解Maven仓库的分类本地Maven仓库和远程Maven仓库(中央仓库,第三方仓库,私服)jcenter和MavenCenter略搭建Maven私服一、下载并安装Maven环境需要注意的是:后面需要修改Settings setting文件3.0之前在C:\Users\xxx.m2下

2015-08-27 23:20:00 2762 1

原创 Robotium 自动化测试

Robotium 自动化测试一、Setup Android Studio环境下,在所要测试的Module的build.gradle文件下添加, compile ‘com.jayway.android.robotium:robotium-solo:5.4.1’ 然后Sync下。二、Start Robotium即是对Instrumentation框架方法的封装,所以使用之前需要继承测试类

2015-08-19 15:18:27 3145 1

原创 【知识点整理(Android)】SharedPreferences的使用心得

@会不断补充的 1、sharedPreferences对象的初始化 三种方式: 1)getSharedPreferences(String name, int mode) 2)PreferenceManager的方法getSharedPreferences() 3)getDefaultSharedPreferences方法 第二三种都是使用系统默认的xml作为sharedPreferen

2015-08-18 01:06:35 2998

原创 【java编程思想--学习笔记(四)】对象导论

写这篇博客的前言: 长话短说,我希望通过阅读《java编程思想》来使我的代码 简洁可用 。 目的的层次不同,首先具体的目标是,了解Java的特性和巩固Java的基础。 更抽象的目的如下: 1、期待以巩固基础的方式,使代码优美,简洁,高效。 2、使自己写的模块能够开放适度,好用。 3、形成一种对代码是否优美的审美观。于是《Java编程思想》第一章 对象导论 由此开始。1.1 抽象

2015-08-16 23:20:01 603

原创 【Android 个人理解(九)】Activity的生命周期方法的深入理解

本篇博客首先介绍Activity的生命周期以及Task(即Activity栈的概念),从而说明在几种情况下(比如程序正常启动或退出),程序执行的顺序(即调用生命周期方法的顺序)。最后重点区别几个容易混淆的生命周期方法。       一、Activity的生命周期深入理解       最初我们都会看到下面这个图:

2015-06-07 19:34:49 871

原创 【Android个人理解(八)】跨应用调用不同组件的方法

假设情景:创建两个应用appA和appB,appA包含一个Service,此Service有一个阻塞方法每隔10秒钟产生一个随机数字,如下:public int getRandomInt(){ Thread.sleep(10000); return someRandomInt;}appB调用appA中Service.getRandomInt()的方

2015-06-03 16:21:31 1136

原创 【Android 排错第二例】UnsupportedOperationException

虽然这个bug的最终在于Can’t convert to dimension: type=0x3的问题上,但分析思路上,是怎样一步一步缩小范围,找到真正的错误。 错误是: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.work.gongchenglion/com.work.gongchenglion.

2015-05-21 15:49:18 1642

原创 【Android 个人理解(七)】用ContentValues和自定义Application处理数据

我当时面临的需求是 1、核心算法数据和UI的交互,2、多个数组数据的封装,3、不确定的数组数据转化到表格形式。就于以上需求,我采用自定义的Application储存和传递全局的数据,采用ContentValues的key-value转化和储存数组数据,然后通过遍历ContentValues的key将对应的值填入对应的表格。大体的步骤如下: 1、从UI界面获取数据,通过循环填充成数组。// 得到三

2015-05-19 22:13:55 1962

原创 【Android 个人理解(五) 】适配器的设计思维

在我们Android 入门学习时,通过ListView,Gallery和Spinner等组件接触到适配器,然后通过自定义的适配器可以使组件变得多种多样,更加灵活。但是和通过getView()显示数据,适配器更重要的是处理不同的数据源,包括变化的。

2015-05-06 22:56:06 459

原创 [Android个人理解(六)]使用include标签的注意事项

我们在使用include标签时是为了提高部分代码的重用性,同时增加代码的层次性和条理性。 但是在我们实际使用的时候,往往就会由于include的属性和include的原理不够清楚,而产生bug。 1、首先,我们说明include标签所在布局文件a和include所包含的布局文件b的关系 必须明确a和b通过使用include连接,与其说是包含,更像是拼接。Include不是View类,自然与其内

2015-04-25 23:44:00 2295

原创 【Android个人理解(四)】自定义Application类的使用

1、为什么要重写Application类 如果想在整个应用中使用全局变量,在java中一般是使用静态变量,public类型;而在android中如果使用这样的全局变量就不符合Android的框架架构,但是可以使用一种更优雅的方式就是使用Application context。 那么为什么这样的全局变量就不符合Android的框架架构? 众说纷纭,我理解的是static访问是无法跨进程的

2015-04-13 20:40:45 2584

翻译 【Android API Guides简译(四)】使用Service还是使用线程?

一个服务是一个组件,这个组件可以在Android后台运行,即使你的这个应用被关闭,它依然在运行。所以说只有你需要一个和当前程序无关的后台程序时,才去创建它。      而如果你只是想让你的App在主线程外工作,而且操作限定在当前程序中时,只需要在在里面创建另一个线程。      比如你只是想在你的Activity在运行时,放一首音乐,那么你应该在onCreat()方法里创建另一个线程,在o

2015-04-07 18:34:31 678

原创 【Android 细节(二)】业务操作类的生命周期中的开始方法

为了防止内存泄露或者其他更重要的原因,为业务操作类构建生命周期是必不可少的。即在类里封装onStart(),onPause(),onFinish()方法。比如我要写一个Android中处理数据库的业务类,他的特点是所有的数据操作是以key-value的方式存储。Databaser.java:// 构造方法 public PhoneDbAdapter(Context context

2015-04-06 19:36:39 631

原创 For And While

在学习数据结构的过程中,无处不在的循环,本人在知道循环次数的情况下,偏爱for循环,但经过试验发现其实While循环更符合真实的循环过程。以下是实验的代码:public class ForAndWhile { public static void main(String[] args) { int p = 0; int i; for (i=0; i < 5; i++) {

2015-03-29 19:53:48 561

原创 【Android 个人理解(三)】从源码剖析如何实现实现全屏效果

实现全屏的代码:// 全屏显示requestWindowFeature(Window.FEATURE_NO_TITLE); //turning off the title at the top of the screen. getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.Lay

2015-03-27 17:40:42 1119

原创 【数据结构java描述(一)】单链表类的create()方法的重写以及Node类的理解

首先我们需要知道线性表的链式结构的设计思路:先构造结点类,然后基于结点,设计链式结构类。Java源码中结点类Node.Java:package com.study.test; publicclass Node { Object data; Node next; Node() { this(null,null); } Node

2015-03-26 23:15:20 8018

原创 【Android细节(一)】Gallery设置自定义的背景属性

问题:在我们使用Gallery作为前端布局,需要   1、先使用TypeArray自定义属性类   2、再通过TypeArray对象调用getResourceId()得到android:GalleryBackground或android:GalleryItemBackground格式。但是android:GalleryBackground或android:GalleryItemBa

2015-03-22 22:07:34 1581

原创 【Android个人理解(二)】从实现方法深入了解自定义适配器的工作过程

自定义适配器时,需要重写BaseAdapter的getCount(),getItem(int position),getItemId(int position),getView()方法。 但是由于不了解每个方法在工作时发挥的作用,而不知道如何重写四个方法。 1、由Adapter的工作原理了解getCount()和getView()的作用。 getCount()用来告诉系统Item的个数,也

2015-03-19 19:41:47 779

原创 【Android个人理解(一)】通过Looper与Handle的关系,理解Looper工作机制

Looper与Handle是Android独有的新概念,但我们学习中常常将他们分开学习,实际上两者密不可分。 Looper与Handle的关系: Looper是负责在线程里建立消息循环的类,包括准备,开始循环,停止等整个消息循环的生命周期。Handle是负责不同线程之间消息的类,包括消息的发送,接受,清除等消息的生命周期。 但是只有存在Looper的线程,才会用到Handle。没有Handle

2015-03-15 20:27:49 1805

原创 java多线程机制三--线程的常用方法

1、start()启动进程,使其从新建状态进入就绪队列排队。2、run()定义进程被调用时所执行的操作。3、sleep()让出CPU使用权,因为休眠时被打断会抛出异常,所以需要try·catch包围。4、isAlive()判断线程是否拥有CPU使用权。注意:一个已经运行的线程不能再被分配实体。否则两个实体会并存,而且由于前一个正在运行,不会被垃圾回收机制回收。示

2015-03-10 21:52:46 493

原创 Java多线程机制二--使用Runnable接口

一、Runnable接口和目标对象通过Thread子类创建线程的优点在于可以增加新的成员变量和新的方法,但是由于JAVA不支持多继承,所以出现Runnable接口。由上,我们创建线程的新方式是:Thread(Runnabletarget)即直接用Thread类创建线程对象。在创建时,我们向构造方法的参数传递一个实现Runnable接口类的对象,我们叫做目标对象。当线

2015-03-09 20:11:25 664

原创 Java多线程机制--Java中的线程

Java多线程机制--Java中的线程一、首先理解程序、进程与线程的关系(略,需个人思考理解)。其中每个进程都有一段专用的内存区域,但是线程之间可以共享相同的内存单元,利用这些共享单元实现数据交换,实时通信和必要的同步操作。二、线程的状态和生命周期1、新建Thread类或者其子类被声明时,已经分配相应的内存空间和资源。但JVM(java虚拟机)尚未将CPU的使用权分给它。2

2015-03-08 22:09:17 575

原创 【java编程思想--学习笔记(三)】访问控制-接口实现与类的访问权限

接口实现 什么是数据类型? java中将数据和方法包装在类中,隐藏具体的实现,其结果就是一种数据类型。(封装产生数据类型) 联想到八大基本数据类型,都具有上述的特点。 由于数据类型的上述特点,创造者将权限的边界划在数据类型的内部,将希望被访问的数据和方法与不希望被访问到的方法和数据分开,隐藏不希望被访问到的方法和数据,实际上就实现了接口和具体实现的分离。 也就是说,了解一个类如何去用,懂

2015-03-07 15:49:23 1347

原创 【Android 排错第一例】NullPointException

排错经验:不要因为某个变量简单熟悉就忽略对该值的检查,由此体现代码的健壮的重要性。 报错:NullPointException,错误处:lv.setAdapter(adapter); 也就是说,lv或adapter传值为空。 前期把精力全部投入到SimpleCursorAdapter,包括“_id”和API 11新出现的SimpleCursorAdapter的构造方法中出现的新的变量flag

2015-03-06 22:43:43 488

原创 【Android入门 十三】数据存储

发觉上篇翻译只注意一些细节,却没有写出数据存储的编程实现,这篇文章通过实例来完整的体现数据存储。 在实践中,发现的主要问题: 读取和写入的字符流和字节流,API文档上的对于FileInputStream的方法write()和read()属于字符流。 assets目录和R,raw目录的区别。 写入时,不可避免的字符编码问题。package com.study.test02;import jav

2015-03-03 22:41:38 444

翻译 【Android API Guides 简译(三)】Data Storage--Storage Options

Android提供了几种永久储存手机数据的选项,而我们选择存储的方式依据于我们存储的不同的特定需求,比如你的数据是否需要只对自己公开,数据是否可以被其他应用得到或者你想要储存多大的数据。 数据存储的方式如下: Shared Preferences 通过xml类型的键值对,存储私密的原始数据。 Internal Storage 内部存储 通过手机内存存储私密数据 Exte

2015-03-02 22:07:53 621

翻译 【Android API Guides 简译(二)】App Resourses--Providing Resources

本文接引上文,主要解释如何在你的工程里组织资源和向不同的设备环境提供特有的资源。一、分组资源种类我们把所有资源分门别类的放在/res下的不同文件夹下,而且/res下的每一个文件夹的名称非常重要,代表不同的含义,如下表所示:注意:不要直接将资源文件保存在/res目录下,这会造成构建错误。你保存在表一上的子目录下的资源被认定为默认资源,也就是说这些资源被认定为你手机应用的默认设计和默认

2015-02-23 23:05:16 946

翻译 【Android API Guides 简译(一)】App Resourses--Overview

将数据与程序分开的原因,表面是为了独立的管理数据,深层原因是使App兼容不同的环境即使你的数据支持不同语言或者不同屏幕大小的特殊设备。这是非常且越来越重要的! 对于各种各样的资源,我们统一分成两种: 默认资源和针对不同环境的备选资源 举个例子,默认资源存放在res/layout/ directory下,针对于横摆方向的设备的备选资源存放在res/layout-land/ directory(横

2015-02-19 00:22:00 1354 2

原创 【java编程思想--学习笔记(二)】访问控制-Java访问权限修饰词

如果不提供任何访问修饰词,则意味着它是“包访问权限”。 1.1 包访问权限2.1 public 接口访问权限 3.1 private 你无法访问4.1 protected 继承访问权限

2015-02-13 22:57:05 656

原创 【Java编程思想--学习笔记(一)】访问控制-包

Java编程思想–学习笔记(一) 访问控制(或隐藏具体实现)与“最初的实现并不恰当”有关。 1、包:库单元 我们之所以要导入包,就是要提供一个管理名字的空间机制。 每个java文件只能有一个public类。其他私有类为主public·类提供支持。 1.1 代码组织 与编译型语言不同,java可运行程序是一组可以打包并压缩成java文档文件(JAR,使用Java的jar文档生成器)的.c

2015-02-12 13:07:33 931

原创 【Android入门 十二】animation动画效果

单一动画:创建不同的animation对象确定动画时间view开始动画复杂动画:    1、动画集创建animation set对象set对象加入不同的animation对象set对象设定时间或者不同的animation对象分别设定时间开始动画    2、逐帧动画创建AnimationDrawable对象向对象添加资源向view对象增加Animation

2015-02-10 20:18:45 501

原创 【Android入门 十一】SQLite的简单使用

大体步骤:创建SQLiteDatabase对象通过重写SQLiteHelper类,执行增删减操作写构造方法onCreate()方法,即第一次使用这个表时,调用的方法(一般建表的语句)onUpgrade()方法,版本更新时调用直接执行查询操作(返回值为游标)调用moveToXX()方法对游标直接找到相关数据,返回布尔值(游标可滚动,不需要While())

2015-02-09 20:25:44 423

原创 java类型转换

1、如何将字串 String 转换成整数 int? A. 有两个方法:1). int i = Integer.parseInt([String]); 或 i = Integer.parseInt([String],[int radix]);2). int i = Integer.valueOf(my_str).intValue(); 注: 字串转成 Double, Float,

2015-02-05 23:24:36 357

FileUtil.java

控制文件,将源文件的数据写入到目标文件中, * 不会检查源文件是否存在, * 若目标文件存在则直接写入, * 否则创建目标文件后再进行写入。

2015-04-13

空空如也

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

TA关注的人

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