- 博客(104)
- 资源 (1)
- 收藏
- 关注
原创 Contacts Provider
Contacts Provider 包括三个表:ContactsContract.Contacts tableRows representing different people, based on aggregations of raw contact rows.ContactsContract.RawContacts tableRows containing a s
2013-07-01 19:05:25
948
原创 EditText clearFocus
当editText 调用clearFocus 取消焦点时,framework会把焦点给传给此页面的第一个focusable的控件,如果这个editText是唯一的一个focusable的,那么clearFocus会首先给自己一个hasFocus为True的OnFocusChangeListener,然后在执行clearFocus原本该执行的hasFocus为False的OnFocusChangeL
2013-06-21 15:15:17
7400
转载 Android 4.0 ProGuard 代码混淆
其实Android 4.0要用ProGuard比2.3更简单:在Eclipse中打开工程目录下的project.properties文件,该文件中有以下两行:# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):#
2013-01-12 16:40:06
3514
转载 MD5 RSA DES
MD5的全称是Message-Digest Algorithm 5,在90年代初由MIT的计算机科学实验室和RSA Data Security Inc发明,经MD2、MD3和MD4发展而来。 MD5将任意长度的“字节串”变换成一个128bit的大整数,并且它是一个不可逆的字符串变换算法,换句话说就是,即使你看到源程序和算法描述,也无法将一个MD5的值变换回原始的字符串,从数学原理上说,是
2013-01-10 14:52:00
660
转载 Java多线程通信机制
Java提供了3个非常重要的方法来巧妙地解决线程间的通信问题。这3个方法分别是:wait()、notify()和notifyAll()。它们都是Object类的最终方法,因此每一个类都默认拥有它们。 虽然所有的类都默认拥有这3个方法,但是只有在synchronized关键字作用的范围内,并且是同一个同步问题中搭配使用这3个方法时才有实际的意义。这些方法在Object类中声明的语法格式
2012-12-26 16:54:34
2753
转载 单例模式
定义:确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。类型:创建类模式类图:类图知识点:1.类图分为三部分,依次是类名、属性、方法2.以>结尾的为注释信息3.修饰符+代表public,-代表private,#代表protected,什么都没有代表包可见。4.带下划线的属性或方法代表是静态的。5.对类图中对象的关
2012-12-26 10:01:30
515
转载 工厂模式
最近这三个模式有点搞混了,而且网上也有类似情况。总结一下。简单工厂:严格说并不是一个设计模式。简单工厂没有抽象类,只有一个具体工厂类如MyFactory,然后MyFactory里面有个工厂方法CreateProduct返回一个基类产品,具体返回什么具体实例通过传入参数然后用case判断。用手机生产做个例子:比如Nokia简单工厂就是只有NokiaFactory工厂类,工厂方法就是Cre
2012-12-25 15:15:26
438
转载 GridLayout
GridLayout可以用来做一个象TableLayout这样的布局样式,但其性能及功能都要比tablelayout要好,比如GridLayout的布局中的单元格可以跨越多行,而tablelayout则不行,此外,其渲染速度也比tablelayout要快。在本文中,将指导读者进一步加深对GridLayout的认识,带大家实做一个简单的数字键盘布局,从中体会GridLayout的用法。 开
2012-12-19 22:05:16
878
转载 字节流与字符流的区别
字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同呢?实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用了缓冲区,通过缓冲区再操作文件,如图12-6所示。下面以两个写文件的操作为主进行比较,但是在操作时字节流和字符流的操作完成之后都不关闭输出流。范例:使用字节流不关闭执行Java代码
2012-12-19 15:45:11
495
转载 String ,StringBuffer ,StringBuilder
String 字符串常量StringBuffer 字符串变量(线程安全)StringBuilder 字符串变量(非线程安全)简要的说, String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,所以经常改
2012-12-18 14:06:32
376
转载 String和StringBuffer的区别
String和StringBuffer的区别,网上资料可以说是数不胜数,但是看到这篇文章,感觉里面做的小例子很有代表性,所以转一下,并自己做了一点总结。 在java中有3个类来负责字符的操作。1.Character 是进行单个字符操作的,2.String 对一串字符进行操作。不可变类。3.StringBuffer 也是对一串字符进行操作,但是可变类。String:是对象
2012-12-18 14:01:55
381
转载 abstract class与interface的区别
1.abstract class 在 Java 语言中表示的是一种继承关系,一个类只能使用一次继承关系。但是,一个类却可以实现多个interface。 2.在abstract class 中可以有自己的数据成员,也可以有非abstarct的成员方法,而在interface中,只能够有静态的不能被修改的数据成员(也就是必须是static final的,不过在 interface中一般不定义
2012-12-18 13:28:23
540
转载 URLConnection的连接、超时、关闭用法总结
URLConnection的连接、超时、关闭用法总结java中可以使用HttpURLConnection来请求WEB资源。1:> URL请求的类别:分为二类,GET与POST请求。二者的区别在于: a:) get请求可以获取静态页面,也可以把参数放在URL字串后面,传递给servlet, b:) post与get的不同之处在于post的参数不是放在URL
2012-11-10 00:23:54
27594
原创 Android网络
表单提交中get和 post方式的区别有5点:1.get是从服务器上获取数据,post是向服务器传送数据。2.get是把参数数据队列加到提交表单的 ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTPpost机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。3.对
2012-11-10 00:23:34
1056
原创 android:process的理解
在做AIDL的时候,看到有的人在android:process的地方遇到一个问题,现在简单总结一下。1. 在client和service不在同一项目的情况下不需要设置,因为不同的项目自然不在同一个进程中。2. 在client和service在同一项目的情况下:2.1 如果不设置android:process则client和service属于同一进程。2.2 如果设置andr
2012-11-08 18:49:53
9036
3
转载 android Parcelable
这两个方法是用来序列化数据的,主要是用在不同的Activity之间在通过intent进行通信的时候,数据传输时,Data部分的传输。以前没注意过这个,都是直接用putData的,例如:Intent it=new Intent();Bundle bd=new Bundle();bd.putInt("aa",20);bd.putString("bb",ok);it.setExtras(
2012-11-08 10:51:08
506
原创 startActivityForResult的launchmode
目标SecondActivity的launchmode不可以为singleTask 和 singleInstancestandard和singleTop均可。FirstActivity:class ButtonOnClickListener implements OnClickListener{ @Override public void onClick(View v)
2012-11-04 23:12:28
738
转载 Activity生命周期
1. 一个activity 完整的生命周期 自第一次调用 onCreate(Bundle)开始,直至调用onDestroy()为止。activity在onCreate()中设置所有"全局"状态以完成初始化,而在onDestroy()中释放所有系统资源。比如说,如果activity有一个线程在后台运行以从网络上下载数据,它会以 onCreate()创建那个线程,而以 onDestroy()销毁那
2012-10-24 18:33:50
697
转载 如何保证service不被杀掉
1.在service中重写下面的方法,这个方法有三个返回值, START_STICKY是service被kill掉后自动重写创建@Override public int onStartCommand(Intent intent, int flags, int startId) { return START_STICKY; }在setting里kil
2012-10-24 13:31:28
2955
转载 图片压缩
开发中应用到图片的处理时候,我们通常会怎么缩放操作呢,来看下面的两种做法: 方法1:按固定比例进行缩放 在开发一些软件,如新闻客户端,很多时候要显示图片的缩略图,由于手机屏幕限制,一般情况下,我们取图片的缩略图,取缩略图的方法我们可以使用BitmapFactory的decodeFile方法,然后通过传递进去 BitmapFactory.Option类型的参数进行取缩略图,在Op
2012-10-24 13:06:30
726
转载 BaseAdapter优化
当系统开始绘制ListView的时候,首先调用getCount()方法。得到它的返回值,即ListView的长度。然后系统调用getView()方法,根据这个长度逐一绘制ListView的每一行。也就是说,如果让getCount()返回1,那么只显示一行。而getItem()和getItemId()则在需要处理和取得Adapter中的数据时调用。那么getView如何使用呢?如果有10000行数据
2012-10-23 00:06:01
3708
转载 BaseAdapter介绍
BaseAdapter ListView是Android开发过程中较为常见的组件之一,它将数据以列表的形式展现出来。一般而言,一个ListView由以下三个元素组成: 1.View,用于展示列表,通常是一个xml所指定的。大家都知道Android 的界面基本上是由xml文件负责完成的,所以ListView的界 面也理所应当的使用了xml定义。例如在 ListV
2012-10-22 20:26:15
808
原创 getContentResolver().query 和 managedQuery 的区别
Activity 里面提供了一个 managedQuery() 方法,按照 Android SDK 里面的说明,“the activity will manage its lifecycle for you.” 听起来很好,Activity 可以替你管理 Cursor 的生命周期了,就不用记着去 close() 了,代码可以更简洁。但是 Activity 是怎么去管理 Cursor 的
2012-10-18 21:49:51
2279
原创 pthread_detach,pthread_cleanup_push,pthread_cleanup_pop
pthread_detach:就是当线程正常结束的时候会自动释放资源。一个线程或者是可汇合的(joinable,缺省值),或者是脱离的(detached)。当一个可汇合的线程终止时,它的线程ID和退出状态将留到另一个线程对它调用pthread_join。脱离线程却象守护进程:当它们终止的时,所有相关资源都被释放,我们不能等待它们终止。如果一个线程需要知道另一个线程什么时候终止,
2012-10-17 16:56:10
718
转载 Linux系统调用
目录:1. Linux系统调用原理2. 系统调用的实现3. Linux系统调用分类及列表4.系统调用、用户编程接口(API)、系统命令和内核函数的关系5. Linux系统调用实例6. Linux自定义系统调用1.系统调用原理系统调用,顾名思义,说的是操作系统提供给用户程序调用的一组“特殊”接口。用户程序可以通过这组“特殊”接口来获得操作系统内核提
2012-10-14 23:00:17
978
转载 压缩存储图片
有时会发现由于内存不够而导致错误,大都来源于Image太大造成的。下面给出一个简单有效的方法: BitmapFactory.Options opts = new BitmapFactory.Options(); opts.inSampleSize = 4; // 1/4Bitmap bitmap = BitmapFactory.decodeFile(imageFile, opt
2012-09-27 11:40:08
612
转载 ContentProvider中gettype() 和MIME类型的理解
程序入口点类似于win32程序里的WinMain函数,Android自然也有它的程序入口点。它通过在AndroidManifest.xml文件中配置来指明,可以看到名为NotesList的activity节点下有这样一个intent-filter,其action为android.intent.action.MAIN,Category指定为 android.intent.catego
2012-09-27 00:28:30
5061
原创 Service总结
1. 一个Service基本上有两种形式:被启动(Started)当应用程序组件(如一个Activity)通过调用startService()方法启动的服务是“被启动(started)”的。服务一旦启动,它就能够无限期的在后台运行,即使启动它的组件被销毁。通常,一个被启动的服务之星一个单一操作,并且不给调用者返回结果。例如,这个服务可能在网络上下载或上传文件。当操作完成的时候,服务应该自己
2012-09-26 00:54:04
645
转载 Android之Service与IntentService的比较
不知道大家有没有和我一样,以前做项目或者练习的时候一直都是用Service来处理后台耗时操作,却很少注意到还有个IntentService,前段时间准备面试的时候看到了一篇关于IntentService的解释,发现了它相对于Service来说有很多更加方便之处,今天在这里稍微来总结下我的心得。 首先IntentService是继承自Service的,那我们先看看Service的官方介
2012-09-24 23:05:40
461
转载 Activity的四种加载模式
Activity有四种加载模式:standard(默认), singleTop, singleTask和 singleInstance。以下逐一举例说明他们的区别: standard:Activity的默认加载方法,即使某个Activity在Task栈中已经存在,另一个activity通过Intent跳转到该activity,同样会新创建一个实例压入栈中。例如:现在栈的情况为:A
2012-09-24 01:12:06
401
原创 fragment例子
main.xml:<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="horizontal" android:layout_width="fill_parent"android:layout_height="fill_parent" android
2012-09-23 14:42:43
548
原创 float数据的内存表示
将-0.15625表示成机器内的32个字节的形式. 第一步:将-0.15625表示成二进制形式: (-0.15625)(十进制数)=(-0.00101)(二进制形式); 第二步:将二进制形式的浮点数转化为规格化的形式:(小数点向右移动3个二进制位可以得到) -0.00101=-1.01*2^(-3) 同样,产生了三项:符号位:该数为负数,故第31位为1,占一个二进制
2012-09-20 22:15:56
596
原创 ubuntu10.04 LAMP
直接一条命令 :apt-get install apache2 mysql-server mysql-client php5 php5-gd php5-mysql设置Ubuntu文件执行读写权限LAMP组建安装好之后,PHP网络服务器根目录默认设置是在:/var/www。由于Linux系统的安全性原则,改 目录下的文件读写权限是只允许root用户操作的,所以我们不能在www文件夹中新建
2012-09-19 11:44:18
409
转载 2.21 只考加法的面试题
[question]我们知道:1+2=3; 4+5=9; 2+3+4=9;等式左边都是两个以上连续的自然数相加,那么是不是所有的整数都可以写成这种形式呢?写一个程序,对于一个32位正整数,输出它所有的连续自然数之和的算式。 [analysis]可以发现任意自然数序列其实是公差为1的等差数列,那么数列前N项和公式
2012-09-18 14:08:36
707
转载 2.20 程序理解和时间分析
这是《编程之美》的2.20题目,给出一段C#代码,要求不用电脑,理解程序并回答问题。下面是从C#代码中改写成的C++代码:[cpp] view plaincopy#include #include using namespace std; int main() { int rg[] = {2,3,4,5,
2012-09-18 10:20:48
535
原创 2.19 区间重合判断
#include #define N 6 int sort(int x[], int y[], int b, int e){ int tmpx,tmpy,i,j,m; i=b; j=e; tmpx=x[i]; tmpy=y[i]; while(i<j) { while(x[j]>=tmpx&&i<j) j--; x[i]=x[j]; y[i]=y[j];
2012-09-17 19:35:10
1064
原创 2.18 数组分割
题目概述:有一个没有排序,元素个数为2N的正整数数组。要求把它分割为元素个数为N的两个数组,并使两个子数组的和最接近。假设数组A[1..2N]所有元素的和是SUM。模仿动态规划解0-1背包问题的策略,令S(k, i)表示前k个元素中任意i个元素的和的集合。显然:S(k, 1) = {A[i] | 1S(k, k) = {A[1]+A[2]+…+A[k]}S(k, i) = S(k-
2012-09-15 16:59:52
699
转载 0-1背包问题(动态规划)
动态规划是用空间换时间的一种方法的抽象。其关键是发现子问题和记录其结果。然后利用这些结果减轻运算量。比如01背包问题。一个旅行者有一个最多能用M公斤的背包,现在有N件物品,它们的重量分别是W1,W2,...,Wn,它们的价值分别为P1,P2,...,Pn.若每种物品只有一件求旅行者能获得最大总价值。输入格式:M,NW1,P1W2,P2......输出
2012-09-14 00:43:53
397
原创 2.17 数组循环移位
#include #include void reverse(char * array,int a,int b){ char tmp; for(;a<b;a++,b--) { tmp=array[a]; array[a]=array[b]; array[b]=tmp; }}void shift(char * str,int n,int k){ k=k%n; r
2012-09-13 19:24:35
368
原创 2.16 求数组中最长的递增子序列
#include #include int max(int *a,int len)//求数组的最大元素{ int i,max; max=a[0]; for(i=1;i<len;i++) { if(a[i]>max) max=a[i]; } return max;}int LIS(int * array,int n){ int i,j; int *lis=(in
2012-09-13 18:11:54
653
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人