- 博客(188)
- 资源 (7)
- 收藏
- 关注
原创 Android中Intent对象与Intent Filter过滤匹配过程详解
如果对Intent不是特别了解,可以参见博文《Android中Intent概述及使用》,该文对本文要使用的action、category以及data都进行了详细介绍。本文在描述组件在manifest中注册的Intent Filter过滤器时,统一用intent-filter表示。概述我们知道,Intent是分两种的:显式Intent和隐式Intent。如果一个Intent明确指定了要启动的组件的完整
2015-09-16 01:12:45 19564 16
原创 Android中Intent概述及使用
Android中的Intent是一个非常重要且常用的类,可以用来在一个组件中启动App中的另一个组件或者是启动另一个App的组件,这里所说的组件指的是Activity、Service以及Broadcast。Intent的用途Intent主要有以下几种重要用途: 1. 启动Activity:可以将Intent对象传递给startActivity()方法或startActivityForResult(
2015-09-13 18:45:54 41064 7
原创 Android中通过Messenger与Service实现进程间双向通信
Android中的Service和其调用者既可以在同一个App中,也可以在不同的App。如果Service在App1中,而调用Service的客户端在App2中,那么我们就可以用Service实现进程间的相互通信。本文将介绍如何通过bindService和Messenger实现进程间通信(IPC),如果对bindService绑定服务和Binder不熟悉,可参见《Android中bindServic
2015-09-10 01:26:25 19019 17
原创 Android中bindService的使用及Service生命周期
Android中有两种主要方式使用Service,通过调用Context的startService方法或调用Context的bindService方法,本文只探讨纯bindService的使用,不涉及任何startService方法调用的情况。如果想了解startService相关的使用,请参见《Android中startService的使用及Service生命周期》。bindService启动服务
2015-09-02 01:06:15 48762 17
原创 Android中IntentService的使用及其源码解析
为什么我们需要IntentService ?Android中的IntentService是继承自Service类的,在我们讨论IntentService之前,我们先想一下Service的特点: Service的回调方法(onCreate、onStartCommand、onBind、onDestroy)都是运行在主线程中的。当我们通过startService启动Service之后,我们就需要在Serv
2015-08-28 08:41:37 5316 1
原创 Android通过startService实现批量下载示例
关于startService的基本使用概述及其生命周期可参见博客《Android中startService的使用及Service生命周期》。本文通过批量下载文件的简单示例,演示startService以及stopService(startId)的使用流程。系统界面如下: 界面很简单,就一个按钮“批量下载文章”,通过该Activity上的按钮启动DownloadService。DownloadSer
2015-08-27 00:09:11 6606 2
原创 Android通过startService播放背景音乐简单示例
关于startService的基本使用概述及其生命周期可参见博客《Android中startService的使用及Service生命周期》。本文通过播放背景音乐的简单示例,演示startService的基本使用流程。系统界面如下: 界面上面就两个按钮,”播放音乐并退出Activity” 和 “停止播放音乐”。我们在该示例中,通过操纵Activity的按钮控制MusicService播放或停止播放音
2015-08-19 00:07:12 9390
原创 Android中startService的使用及Service生命周期
Android中有两种主要方式使用Service,通过调用Context的startService方法或调用Context的bindService方法,本文只探讨纯startService的使用,不涉及任何bindService方法调用的情况。如果想了解bindService的相关使用,请参见《Android中bindService的使用及Service生命周期》。当我们通过调用了Context的s
2015-08-16 00:10:32 42786 9
原创 Android中Service概述
Service是Android中一种很重要的组件,一般来说有两种用途:用Service执行长期运行的操作,并且与用户没有UI界面的交互;某个应用程序的Service可以被其他应用程序的组件调用以便提供更广泛的使用。要想使得自己写的Service能够正常运行,必须在AndroidManifest.xml中通过标签注册Service,类似于通过标签注册Activity一样。有两种方式使用Service,
2015-08-15 17:48:19 3050
原创 Android中Looper的quit方法和quitSafely方法
Looper是通过调用loop方法驱动着消息循环的进行: 从MessageQueue中阻塞式地取出一个消息,然后让Handler处理该消息,周而复始,loop方法是个死循环方法。那如何终止消息循环呢?我们可以调用Looper的quit方法或quitSafely方法,二者稍有不同。 Looper的quit方法源码如下:public void quit() { mQueue.quit(fals
2015-08-13 22:02:13 25071
原创 Android中HandlerThread的使用及源码解析
HandlerThread类可以很方便地创建一个带有looper的新线程。该looper可以被用来创建hanlder对象。需要注意的是start方法必须要调用。HandlerThread使用起来之所以感觉方便,是因为HandlerThread这个类在run方法内部对Looper做了一些工作(调用Looper.prepare()和Looper.loop()方法),这样我们开发者在使用的时候就不需要太多的与Looper打
2015-08-06 17:36:37 7125 3
原创 Android新线程中更新主线程UI中的View方法汇总
Android中的UI控件都不是线程安全的,所以如果在某一个新线程中直接更新主线程中的UI控件时就会报如下错误: android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views. 为了解决在另一个线
2015-08-05 17:36:39 9523
原创 深入源码解析Android中的Handler,Message,MessageQueue,Looper
本文主要是对Handler和消息循环的实现原理进行源码分析,通过分析源码的方式去探索Thread、MessageQueue、Looper、Message以及Handler的实现原理,并最终通过一张图的形式将它们之间的关系展示出来。
2015-08-01 02:20:53 31294 55
原创 Android中Handler的使用
Handler是Android中引入的一种让开发者参与处理线程中消息循环的机制。每个Hanlder都关联了一个线程,每个线程内部都维护了一个消息队列MessageQueue,这样Handler实际上也就关联了一个消息队列。可以通过Handler将Message和Runnable对象发送到该Handler所关联线程的MessageQueue(消息队列)中,然后在Hanlder的handleMessage中处理消息。
2015-07-29 00:16:47 95260 32
原创 Java中常见的IO流及其使用
Java中常见的IO流的介绍及使用:ByteArrayInputStream & ByteArrayOutputStreamFileInputStream & FileOutputStreamPipedInputStream & PipedOutputStreamObjectInputStream & ObjectOutputStreamSequenceInputStream...
2015-07-09 19:54:49 10040 1
原创 深入理解Java中的HashMap的实现原理
1. HashMap为了提高查找的效率使用了分块查找的原理,对象的hashCode返回的哈希值进行进一步处理,这样就有规律的把不同的元素放到了不同的区块或桶中。下次查找该对象的时候,还是计算其哈希值,根据哈希值确定区块或桶,然后在这个小范围内查找元素,这样就快多了。2. 如果重写了equals方法,那么必须重写hashCode方法,保证如果两个对象相互equals,那么二者的hashCode的返回值必定相等。3. 如果两个对象的hashCode方绘制相等,这两个对象不必是equals的。
2015-06-22 18:44:08 5631 1
原创 Java中的嵌套类、内部类、静态内部类
嵌套类可以分为两种,静态的和非静态的,即静态嵌套类和非静态嵌套类。非静态嵌套类又叫做内部类(Inner Class)。我们通常所说的静态内部类其实是不严格的,严格的说应该叫做静态嵌套类(Static Nested Class)。虽然内部类和静态嵌套类都属于嵌套类,但是二者有本质区别:内部类的实例化对象需要绑定一个外围类的实例化对象,而静态嵌套类的实例化对象不能也无法绑定外围类的实例化对象。
2015-06-14 12:03:20 11970 1
原创 Java类的多态机制
Java中除了static方法和final方法(private方法也是final方法,只不过是隐式的为final)之外,其他所有的方法都是后期绑定。Java类的多态指的是当将子类向上转型为父类型并调用父类型中相应的方法时,多态机制会根据动态绑定自动判断出调用相应的子类的方法。也就是说多态机制的存在的基础是子类实现了对父类中相应方法的函数覆盖。
2015-06-06 19:23:44 3020 6
原创 Java中的垃圾回收
关于Java垃圾回收机制的几点:1. What ?Java中除了基本类型之外都是对象,基本类型分配的是堆栈内存,对象时通过new分配的堆内存。不同于C或C++,对象没有析构函数,Java是通过垃圾回收机制回收对象的内粗的。也就是当一个对象没有被其他对象或变量使用和引用的时候,该对象就属于无用的对象,在某种情况下,Java的垃圾回收机制就会回收这些无用的对象,以释放堆内存。2. When ?垃圾回收
2015-06-01 22:43:21 1596
原创 2014年总结
新的一年即将过去,在大年三十这天赶紧简单记录一下这一年的收获。2014年,说实话,很累,不过也收获了很多,第一次参与全球性产品的发布,第一次开发基于二十多种语言的产品,第一次感受到与多国开发人员协作的体验,对“产品”的认识有所提高。在年末带着另一半跟公司同事一起去泰国玩了几天,第一次出国,看人妖,泡海澡,逛夜市,玩的不亦乐乎。在此也记录一下明年的计划:1. 开源更多高质量的项目放到GitHub上2
2015-02-18 18:35:16 2020 2
原创 Ubuntu软件升级重启后,无法登陆,光标闪烁
我用的Ubuntu版本是12.04,有次提示软件更新(不是升级操作系统),就随手更新了,提示重启,
2014-09-17 21:51:47 4182
原创 OpenGL中的坐标变换、矩阵变换
OpenGL中存在六种坐标系:1. Object or model coordinates(模型坐标系)2. World coordinates(世界坐标系)3. Eye (or Camera) coordinates(视坐标系)4. Clip coordinates(裁剪坐标系)5. Normalized device coordinates(归一化设备坐标系)6. Wi
2014-06-01 16:12:33 21095 17
原创 Eclipse经验总结
1.在Eclipse要确保package的结构要与实际的文件夹目录结构一致,否则会报错"The declared packag"
2014-04-07 15:15:36 2382
原创 Java经验总结
1.自己手动创建java文件时,不要将其设置为UTF-8编码,否则在编译的时候会报“非法字符”的错误,应该用ANSI编码。如果使用了ANSI编码,那么Java文件中的中文不会受影响,正常输出。
2014-04-06 19:26:50 2569
原创 正则表达式学习
1. 如果想同时使用多个修饰符可以这样写/reg/gi2. .(点号)匹配任何字符,除了换行和行结束符3. n?匹配零个或一个n的字符串,例如/http(s?)/可以匹配http或https4.n+匹配至少包含一个n的字符串5.n*匹配包含零个或多个n的字符串,例如可以用(.*)匹配连续任意字符串,例如/http:\/\/www.(.*).com/既可以匹配http://www.b
2014-03-30 17:20:28 2315
原创 Dojo点滴记录
1.如果在小部件a的模板文件中使用了其他的小部件b,那么就需要在a的js文件中也要引入b的路径,并且a还要继承自dijit/_WidgetsInTemplateMixin,否则无法正确解析a中的b小部件。2.使用on、topic.subscribe、aspect.before、aspect.after都会返回一个handler对象,该对象有个一个remove方法,在小部件中使用以上几个
2014-03-29 18:42:01 2722
原创 Git使用总结
1.branchgit branch列出所有分支,当前分支为绿色git checkout demo将当前分支切换为demo分支git push origin develop将更新推送到develop分支git push将更新推送到所有分支,不过有可能GitHub上的某个分支拒绝接收更新
2014-03-29 17:49:19 2408
原创 前端点滴记录
1.强制浏览器刷新某个dom节点a.removeChild(b);a.appendChild(b);2.经测试发现IE10中不支持dom.dataset属性,如果如下自定了属性的话,在Chrome的高版本中可以通过div.dataset.tip直接获取,而在IE10中要通过div.getAttribute('data-tip')获取,IE11没测试过是否支持dataset,di
2014-03-29 17:25:10 2244
原创 本命年总结
2013是蛇年,也是我的本命年,转眼就要过去了,一晃自己都24了,在帝都漂了一年半,把自己今年的变化写下来。今年自己换工作了,按照去年的计划,自己上半年开始用WebGL鼓捣WebGlobe,最后鼓捣的差不多了,然后就把做的东西放到了HiWebGL站长的站点上,算是自己学习WebGL的一个阶段性成果吧。自己做这个东西主要是自己感兴趣,因为渲染对于GIS太重要了,当然自己只是会点皮毛而已。当时厌倦
2014-01-25 09:30:01 3004
原创 Element属性方法的浏览器兼容性概览
参考自https://developer.mozilla.org/en-US/docs/Web/API/Element
2013-12-17 09:39:42 8048
原创 document.documentElement
参考 https://developer.mozilla.org/zh-CN/docs/Web/API/document.documentElement http://www.w3schools.com/jsref/prop_document_documentelement.asp该属性为只读属性,返回的元素是document的根元素(例如:HTML文档的根元素
2013-12-16 23:10:13 2194
原创 getComputedStyle与currentStyle
本文参考https://developer.mozilla.org/en-US/docs/Web/API/Window.getComputedStyle1.简介 getComputedStyle是window下的一个全局函数,可以获取元素真正使用的样式。2.语法 var style = window.getComputedStyle(element[, ps
2013-12-15 20:00:40 3676
原创 document.devaultView
在浏览器中,该属性返回当前 document 对象所关联的 window 对象,如果没有,会返回 null。该属性为只读,IE 9 以下版本不支持 defaultView。
2013-12-15 19:21:47 1953
原创 Linux目录结构
Linux文件系统是采用层级式的目录结构,在此结构中的最上层是根目录“/”,然后在此目录下再创建其它的目录。跟目录/下主要包括以下一些目录:/root是存放系统管理员root用户文件的目录/home/bin/sbin/etc/mnt是专门挂载光驱和软驱的目录/var/boot
2013-12-01 13:22:35 2316 3
原创 dojo AMD开发之dojo/_base/html
在dojo的AMD开发方式中,以前在dojo全局中的方法被拆分到各个不同的文件中,比如在开发一个widget的时候经常要对dom进行操作,为了遵从AMD的开发方式,要引入很多的文件,比如dojo/dom-construct、dojo/dom-class、dojo/dom-style等,这样每次引入的文件太多,一则麻烦,二则加大了http的请求数量,dojo官方也考虑到了这个问题,将dojo中有关d
2013-12-01 00:51:03 2356 2
原创 Linux下开发C
首先用vi编写c程序,然后用gcc进行编译,具体如下:1.gcc -v可以察看gcc的版本2.执行vi test.cpp3.在vi中收入以下代码#include int main(){ printf("Hello World!"); return 0;}4.输入完成后在vi的底行模式中执行:wq保存退出5.在终端中执行gcc test.cpp6.执
2013-11-30 23:45:55 2294
原创 Linux下vi使用
1.vi有三种模式:指令模式(Command Mode)、插入模式(Insert Mode)以及底行模式(Last line Mode)。2.指令模式下输入i、a、o、r可进入插入模式,插入模式下按Esc键可返回指令模式。3.指令模式下输入:可进入底行模式,底行模式下按回车键执行完命令或按Esc键都可以返回指令模式。4.插入模式与底行模式之间不能直接进行切换,二者如果需要切换需要首先切
2013-11-30 22:03:34 2482
原创 Linux常用命令
1.Ctrl+Alt+T -> 显示控制台2.pwd显示当前的路径3.ls列出当前路径下的文件4.ls -l显示当前路径下文件的详细信息5.ls -a显示隐藏文件6.ls -al同时显示隐藏文件,并以长列表形式显示文件的详细信息5.cd跳转到某个路径下6.sudo一般用于执行root权限,如果某个命令无法正常执行时,在命令前加入sudo试试 7.sudo usera
2013-11-29 21:03:59 2091
Android使用MaskFilter的Demo
2015-11-17
Android中Canvas绘图基础详解
2015-11-11
Android中使用Loader读取联系人信息(兼容低版本Android)
2015-09-30
Android利用Intent拍照、摄像、打电话、发短信、发邮件等示例
2015-09-19
ArcObjects开发基础与技巧——基于Visual+Basic.NET-蒋波涛
2010-04-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人