- 博客(118)
- 资源 (2)
- 收藏
- 关注
原创 Android实现机制(三)——View事件分发机制
View的事件主要指的是当touch到触摸屏时,系统所产生效果的过程,在这个过程中主要会涉及三个方法:dispatchTouchEvent(MotionEvent ev)onInterceptTouchEvent(MotionEvent ev)onTouchEvent(MotionEvent ev)响应这些方法的载体可以是View、ViewGroup或者Activity。 其中ViewGr
2016-08-02 11:31:33 566
原创 Android实现机制(二)——View绘制机制
View的绘制主要分为三步measurelayoutdraw这个流程的首先是由ViewRootImpl类的performTraversals()方法开始的,这个方法会判断是否需要mesure、layout、draw。第一步:measureView的measure过程从root view开始,下面是其流程RootViewViewGroup measureVie
2016-08-01 17:41:17 901
原创 Android插件技术(三)DexClassloader分析
在Android中,ClassLoader是抽象类,一般使用DexClassLoader或者PathClassLoader加载,他们的区别是DexClassLoader可以加载jar/apk/dex,可以从SD卡中加载未安装的apkPathClassLoader只能加载系统中已经安装过的apk可以对比一下这俩类的源码// DexClassLoader.javapublic class Dex
2016-07-28 21:05:27 766
原创 Android插件技术(二)ClassLoader分析
上一篇文章讲了JVM加载类的一个流程,在实践时通常会使用到ClassLoader来进行类的加载。ClassLoader在Java语言中占据了核心地位,Java应用服务器,OSGi,以及大量的网络框架,它们大多数都用到了ClassLoader。ClassLoader当写好一个JAVA程序,都会有若干个class文件组织成一个完整的应用程序,当运行一个JAVA程序时,经常会通过一个class文件调用另一
2016-07-28 21:03:54 721
原创 Android插件技术(一) JVM 类加载机制
动态加载,本质上是通过JVM类加载机制将插件模块加载到宿主apk中,并通过android的相关运行机制,实现插件apk的运行。因此熟悉JVM类加载的机制非常重要。类加载机制:虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析、初始化,最终形成可以被虚拟机直接使用的Java类型从类被加载到虚拟机内存中开始,到卸载出内存为止,类的生命周期包括加载(Loading)、验证(Veri
2016-07-28 21:01:22 776
原创 Android实现机制分析(一)——消息机制
Android是消息驱动的,我们经常遇到属于消息机制的名字包括Handler、Looper、MessageQueue和Message。 * 载体:Message * 队列:MessageQueue * 调度:Looper * 处理:Handler其中在应用开发中,Handler和Message是我们经常用到的,而Looper偶尔会用到,MessageQueue则基本不会见到了,这是因为And
2016-07-28 20:49:11 459
转载 android面试题
1、 Android dvm的进程和Linux的进程, 应用程序的进程是否为同一个概念DVM指dalivk的虚拟机。每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。而每一个DVM都是在Linux 中的一个进程,所以说可以认为是同一个概念。2、sim卡的EF 文件有何作用sim卡的文件系统有自己规范,主要是为了和手机通讯,sim本 身可以有自己
2016-01-27 16:51:31 480
转载 java面试题(六)
三. html&JavaScript&ajax部分1. 判断第二个日期比第一个日期大如何用脚本判断用户输入的的字符串是下面的时间格式2004-11-21必须要保证用户的输入是此格式,并且是时间,比如说月份不大于12等等,另外我需要用户输入两个,并且后一个要比前一个晚,只允许用JAVASCRIPT,请详细帮助作答,,//这里可用正则表达式判断提前判断一下格式,然后按下提取各时
2016-01-25 09:43:24 468
转载 java面试题(五)
二.算法与编程1、编写一个程序,将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中,a.txt文件中的单词用回车符分隔,b.txt文件中用回车或空格进行分隔。答:packagecn.itcast;import java.io.File;import java.io.FileReader;import java.io.F
2016-01-25 09:42:37 588
转载 java面试题(四)
71、说出一些常用的类,包,接口,请各举5个要让人家感觉你对java ee开发很熟,所以,不能仅仅只列core java中的那些东西,要多列你在做ssh项目中涉及的那些东西。就写你最近写的那些程序中涉及的那些类。常用的类:BufferedReader BufferedWriter FileReader FileWirter String Integerjava.ut
2016-01-25 09:41:25 692
转载 java面试题(三)
51、启动一个线程是用run()还是start()? .启动一个线程是调用start()方法,使线程就绪状态,以后可以被调度为运行状态,一个线程必须关联一些具体的执行代码,run()方法是该线程所关联的执行代码。52、当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?分几种情况:1.其他方法前是否加了synchr
2016-01-25 09:40:35 465
转载 java面试题(二)
31、String s = "Hello";s = s + " world!";这两行代码执行后,原始的String对象中的内容到底变了没有?没有。因为String被设计成不可变(immutable)类,所以它的所有对象都是不可变对象。在这段代码中,s原先指向一个String对象,内容是 "Hello",然后我们对s进行了+操作,那么s所指向的那个对象是否发生了改变呢?答案是没有。这时,s
2016-01-25 09:39:40 596
转载 java面试题(一)
这套面试题主要目的是帮助那些还没有java软件开发实际工作经验,而正在努力寻找java软件开发工作的朋友在笔试时更好地赢得笔试和面试。由于这套面试题涉及的范围很泛,很广,很杂,大家不可能一天两天就看完和学完这套面试宝典,即使你已经学过了有关的技术,那么至少也需要一个月的时间才能消化和掌握这套面试宝典,所以,大家应该早作准备,从拿到这套面试宝典之日起,就要坚持在每天闲暇之余学习其中几道题目,日积月累
2016-01-25 09:38:04 683
原创 PHP基础面试题
PHP语言基础1. strlen( )与 mb_strlen( )的作用分别是什么(新浪网技术部)strlen和mb_strlen都是用于获取字符串长度。strlen只针对单字节编码字符,也就是说它计算的是字符串的总字节数。如果是多字节编码,如 gbk 和 utf-8,使用 strlen 得到是该字符的总字节数;可以使用mb_strlen获取其字符个数,使用mb_strle
2015-09-10 15:50:46 1267
原创 PHP 数组操作方法
1. 合并数组array_merge()函数将数组合并到一起,返回一个联合的数组。所得到的数组以第一个输入数组参数开始,按后面数组参数出现的顺序依次迫加。其形式为:Php代码 array array_merge (array array1 array2…,arrayN) 这个函数将一个或多个数组的单元合并起来,一个数组中的值附加在前一个
2015-06-12 16:50:56 1033
翻译 sublime 12个不错的使用技巧
本文为您提供Sublime Text编辑器的12个技巧和诀窍,深入挖掘这个看似简洁的代码编辑器,背后所隐藏的实现各种高级功能的无限可能。1) 选择以下是一些Sublime Text选择文本的快捷键:Command + D 选中一个单词Command + L 选中一行Command + A 全选Ctrl + Command + M` 选中括号内所有内容 (编写CSS或JS
2015-06-12 13:18:18 2525
原创 Mac 配置PHP、Nginx、Mysql环境
安装homebrewhomebrew是mac下非常好用的包管理器,会自动安装相关的依赖包,将你从繁琐的软件依赖安装中解放出来。 安装homebrew也非常简单,只要在终端中输入:ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"homebrew的常用命令:brew up
2015-06-09 11:49:20 2196
翻译 adb 使用方法
Android Debug BridgeAndroid调试桥接器,简称adb,是用于管理模拟器或真机状态的万能工具,采用了客户端-服务器模型,包括三个部分:l 客户端部分,运行在开发用的电脑上,可以在命令行中运行adb命令来调用该客户端,像ADB插件和DDMS这样的Android工具也可以调用adb客户端。l 服务端部分,是运行在开发用电脑上的后台进程,用于管理客户端与
2015-05-11 13:43:36 3855
原创 XML与JSON在Android 与服务器协同开发的比较
1.定义介绍(1).XML定义扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 XML使用DTD(document type definition)文档类型定义来组织数据;格式统一,跨平台和语言,早已成为业界公认的标准。XML
2015-03-03 14:54:41 1316
转载 Eclipse 使用 egit 连接 osChina 代码库的方法
摘要 上一篇博客介绍了egit插件的部分使用,这篇博客更加详细地介绍egit使用,同时对上一篇博客的一些细节进行详细说明。eclipse egit eclipse中egit插件 开源中国代码托管 分支 标签目录[-]1、eclipse和egit版本2、开始egit的简单实用3、分支(创建、推送、使用)4、标签(创建、推送)5、分支、标签的删除
2015-02-13 10:05:20 1267
原创 请求Http时可能因为字符问题导致错误的特殊字符转码
url转换问题String url = baseUrl + "?" + "name=" + name + "&age=" + age; url = url.replaceAll("&", "%26"); url = url.replaceAll(" ", "%20");另外:? %3F& %26|
2015-02-10 20:47:10 1774
原创 Android 启动浏览器的方法
[java] view plaincopyprint? Intent intent = new Intent(); intent.setAction("android.intent.action.VIEW"); Uri url = Uri.parse("http://www.baidu.com"); intent.s
2015-01-19 21:12:09 2006
原创 Android 序列化对象接口Parcelable使用方法
什么是Parcelable ? Parcelable,定义了将数据写入Parcel,和从Parcel中读出的接口。一个实体(用类来表示),如果需要封装到消息中去,就必须实现这一接口,实现了这一接口,该实体就成为“可打包的”了。Parcelable 传递对象 Android序列化对象主要有两种方法: 1.实现Serializable接口,实
2014-12-11 09:29:34 2233
原创 在手机与可穿戴设备Wearable通过蓝牙Bluetooth传递Assets(图片等)
开发android wear程序时,经常需要将图片通过Assets 蓝牙传输。1.创建asset,使用create...()方法,比如传递一个Bitmap传输如下[java] view plaincopyprint?private static Asset createAssetFromBitmap(Bitmap bitmap) {
2014-12-09 08:44:55 2246
原创 Android Intent 序列化和反序列化
[java] view plaincopyprint? //序列化 intent.toURI(); //反序列 化使用: Intent.parseUri(uriString, 0); 序列化[java] view plaincopyprint?Intent
2014-12-08 09:47:44 2683
翻译 Android manifest文件中的标签详细介绍
概要每一个Android应用都应该包含一个manifest文件,即AndroidManifest.xml。它包含了程序运行的一些必备信息,比如:--为Java应用程序指定一个独一无二的名字。--描述程序所包括的成分,如activities, services, broadcast receivers和content providers等内容。--定义哪一个成分是主要的。比如主线
2014-09-04 09:21:43 6654 1
原创 android AsyncTask 使用方法
AsyncTask和Handler对比1 ) AsyncTask实现的原理,和适用的优缺点AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可以通过接口实现UI进度更新),最后反馈执行的结果给UI主线程.使用的优点:l 简单,快捷l 过程可控 使用的缺点:l
2014-09-02 19:44:45 1333
原创 当多台设备连接时,选择其中设备ADB调试
1. 通过adb devices命令获取所有online设备的serial number。C:\Users\zhaopeng>adb devicesList of devices attachedb7b86f9 devicelocalhost:4444 device2. 通过adb -s cmd向设备发送adb命令。比如:运行命令shell。
2014-09-01 16:08:07 18015 2
原创 Android Wear 控件——WearableListView(附Demo)
WearableListView是适用于android小型设备如智能手表显示列表的组件,可以村子滚动,非常方便的在只能手表上显示列表控件,每次显示三个列表在屏幕中间位置。它继承RecyclerView,实现了OnScrollListener接口。public class WearableListView extends android.support.v7.widget.RecyclerV
2014-08-28 09:41:00 4324 3
原创 Android 建立手机与手表数据同步机制总结
Android Wear 数据同步机制总结当手机与手表建立蓝牙连接之后,数据就可以通过Google Play Service进行传输。同步数据对象Data ItemDataItem提供手机与手表数据存储的自动同步,一个DataItem对象由其创建者与路径组成的URI所确定。一个DataItem对象为手机和手表提供了一个数据通路,开发者通过改变指定的DataItem实现手机和手表的数据自
2014-08-21 09:00:29 7984 5
翻译 《Swift Programming Language 》——可选链(Optional Chaining)
可选链(Optional Chaining)是一种可以请求和调用属性、方法及子脚本的过程,它的自判断性体现于请求或调用的目标当前可能为空(nil)。如果自判断的目标有值,那么调用就会成功;相反,如果选择的目标为空(nil),则这种调用将返回空(nil)。多次请求或调用可以被链接在一起形成一个链,如果任何一个节点为空(nil)将导致整个链失效。 注意: Swift 的自判断链和 Object
2014-08-15 09:03:00 1309
翻译 Swift 自动引用计数机制ARC
Swift 使用自动引用计数(ARC)这一机制来跟踪和管理你的应用程序的内存。通常情况下,Swift 的内存管理机制会一直起着作用,你无须自己来考虑内存的管理。ARC 会在类的实例不再被使用时,自动释放其占用的内存。 然而,在少数情况下,ARC 为了能帮助你管理内存,需要更多的关于你的代码之间关系的信息。本章描述了这些情况,并且为你示范怎样启用 ARC 来管理你的应用程序的内存。
2014-08-14 09:17:59 1573
原创 Android 通过系统使用NotificationListenerService 监听各种Notification的使用方法
NotificationListenerService是通过系统调起的服务,当有应用发起通知的时候,系统会将通知的动作和信息回调给NotificationListenerService。在继承NotificationListenerService服务实现自己逻辑之前,需要在配置文件中添加如下代码,获取权限。 <service android:name=".NotificationListe
2014-08-13 09:07:38 16332 5
原创 Android 访问Android Wear数据层Api——同步Data Items
Data Items是用于同步手机和wear的数据接口,一个Date Items通常包括下面几部分:Payload一个字节数组,你可以设置任何需要的数据类型,允许进行对象的序列化与反序列化,大小不能超过100k。Path唯一的字符串,必须以正斜杠开始(例如,“/path/to/ data”)通常不需要直接实现DataItem,只需要:1、创建PutDataRequest
2014-08-07 11:25:29 2977
原创 Android Wear 用于发送与同步数据的数据类型与接口概述
Android Wear数据层的API,是google play service的一部分,为您的手持设备和可穿戴式应用程序的通信通道。 Api包括一系列数据对象,可以让系统通过监听器和线路通知app数据层重要的事件。以下是几种对象类型。Data Item提供数据存储用于手机和wear的自动同步。Messages消息API可以实现fire-and-forget模式,如在wear中
2014-08-07 09:58:39 1767
原创 Swift 编程语言的析构过程
在一个类的实例被释放之前,析构函数被立即调用。用关键字deinit来标示析构函数,类似于初始化函数用init来标示。析构函数只适用于类类型。 析构过程原理Swift 会自动释放不再需要的实例以释放资源。如自动引用计数那一章描述,Swift 通过自动引用计数(ARC)处理实例的内存管理。通常当你的实例被释放时不需要手动地去清理。但是,当使用自己的资源时,你可能需要进行一些额外的清理
2014-08-07 08:38:49 1088
转载 Android滑动菜单
之前我向大家介绍了史上最简单的滑动菜单的实现方式,相信大家都还记得。如果忘记了其中的实现原理或者还没看过的朋友,请先去看一遍之前的文章 Android滑动菜单特效实现,仿人人客户端侧滑效果,史上最简单的侧滑实现 ,因为我们今天要实现的滑动菜单框架也是基于同样的原理的。之前的文章中在最后也提到了,如果是你的应用程序中有很多个Activity都需要加入滑动菜单的功能,那么每个Activity都
2014-08-05 13:41:04 917
原创 Android中onInterceptTouchEvent与onTouchEvent
onInterceptTouchEvent:onInterceptTouchEvent是在ViewGroup里面定义的。Android中的layout布局类一般都是继承此类的。onInterceptTouchEvent是用于拦截手势事件的,每个手势事件都会先调用onInterceptTouchEvent。onTouchEvent:onTouchEvent同样也是在view中
2014-08-04 11:19:00 912
转载 仿qq界面
最近反复研究日常经典必用的几个android app,从主界面带来的交互方式入手进行分析,我将其大致分为三类。今天记录第一种方式,即主界面下面有几个tab页,最上端是标题栏,tab页和tab页之间不是通过滑动切换的,而是通过点击切换tab页。早期这种架构一直是使用tabhost+activitygroup来使用,随着fragment的出现及google官方也大力推荐使用fragment,后者大有代
2014-08-04 09:42:03 931
翻译 Swift 的类、结构体、枚举等的构造过程Initialization(下)
类的继承和构造过程类里面的所有存储型属性--包括所有继承自父类的属性--都必须在构造过程中设置初始值。 Swift 提供了两种类型的类构造器来确保所有类实例中存储型属性都能获得初始值,它们分别是指定构造器和便利构造器。 指定构造器和便利构造器指定构造器是类中最主要的构造器。一个指定构造器将初始化类中提供的所有属性,并根据父类链往上调用父类的构造器来实现父类的初始化。
2014-08-01 09:14:56 1235 1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人