自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(76)
  • 收藏
  • 关注

原创 oom问题解决

Dalvik虚拟机会为应用程序分配固定大小的heap ,如果使用超过了这个heap的大小,且没有可被回收对象,就会报oom。多张较大图片会迅速占用空间造成oom。我们可以使用一下的方法来减少这种情况的产生:1.减少单张图片的大小,根据屏幕大小来对bitmap做resize。private void setImageSrc(ImageView imageView, String

2013-09-24 10:23:52 255

转载 jvm加载过程

类从加载到虚拟机到卸载,它的整个生命周期包括:加载(Loading),验证(Validation),准备(Preparation),解析(Resolution),初始化(Initialization),使用(Using)和卸载(Unloading)。其中,验证、准备和解析部分被称为连接(Linking)。加载:        在加载阶段,虚拟机主要完成三件事:1.通

2013-09-23 20:28:44 143

转载 单列

面试的时候,常常会被问到这样一个问题:请您写出一个单例模式(Singleton Pattern)吧。好吧,写就写,这还不容易。顺手写一个:public final class EagerSingleton  {      private static EagerSingleton singObj = new EagerSingleton();        pr

2013-09-23 19:26:52 202

原创 2013/08/28

今天碰到一个需求,一个ViewPager里面包含了一个Frament里面有一个ImageView。这个ImageView可以放大,然后这个需求就是要让在ImageView在放大的情况下可以进行左右拉动看照片的其他部分,同是在到达边界的时候移动到下一张照片。系统的gallery就是如此实现的,但是gallery的实现方式非常麻烦,自定义了一个view然后touch事件全部自己处理,我们只能通过偷懒的

2013-08-28 14:20:36 169

原创 《Android内核剖析》---三.IPC之Binder

一.Binder通信的框架:Binder通过服务端接口、Binder驱动、客户端接口三个模块实现跨进程通信。服务器端其实就是一个Binder类的对象,对象一旦创建就会开启一个隐藏的线程,然后该线程不断接收来自Binder驱动的消息,接收到消息后交由被重载后的onTransact()方法进行。Binder驱动在任意一个服务端Binder对象被创建的同时会创建一个mRemote对象,客户端想要访问

2013-08-24 22:39:08 207

原创 《Android内核剖析》---二.Java基础

一.类装载器DexClassLoader在java环境中,有个概念叫类装载器(ClasLoader),其作用是动态装载class文件,ClassLoader对象在初始化时需要制定class文件的路径。我们在平时开发的时候一般是使用import来包含某个类,但是这样做有两个局限的地方,第一该类必须存在本地,第二编译的时候必须存在不然会无法正常编译。但有些情况下所需要的类无法满足上述两个条件,比如

2013-08-23 15:27:58 185

原创 2013/08/21---Task总结

今天碰到一个问题,项目中有一个这样的功能,实现第三方应用程序打开一段url启动我们程序,在应用程序入口activity没有设置launchmode的时候当然是重新启动一个新的程序,假若之前已经有程序在后台运行的话就会出现两个程序同是存在的情况。刚开始的时候我们觉得这样的情况也可以接受,但是随着陆续兼容各种第三方程序的时候问题接踵而来。         首先是新浪,新浪打开链接会使用他程序自带的

2013-08-22 14:17:51 146

原创 《Android内核剖析》---一.Linux基础

一.Linux文件系统:1.linxu系统根目录结构,各目录名的作用2.需要了解的是Unix-like系统中文件的系统有两个意思,第一是根文件系统,第二是储存文件系统,后者和windows中的概念相同,前者差别较大。3.在Unix-like系统中,文件不仅是值硬盘上的数据,还可以代表设备,即我们所说的设备文件。4.储存类文件系统是挂在在根文件下的一个子目录上的。二.Linux启

2013-08-21 21:57:37 192

原创 sleep(),wait(),yield()总结

sleep意思是当前正在被服务的线程需要睡一会,醒来之后继续被服务,但是锁不会释放,同是也不需要再同步代码块种调用,同是sleep是一个静态方法,所以t.sleep(),起作用的不是t线程,而是当前线程。sleep()可使优先级低的线程得到执行的机会,当然也可以让同优先级和高优先级的线程有执行的机会。wait()会释放掉同步锁,因此必须是拥有锁才可以,所以需要在同步代码块中调用,在等待时间

2013-08-21 11:18:15 165

原创 如何保证service不被kill掉的方法总结

kill的情况有几种:1.在设置的运行里kill掉service,这种情况可以onDestroy方法中,调用startService进行Service的重启。2.在设置里面强制停止捕捉系统进行广播(action为android.intent.action.PACKAGE_RESTARTED)3. 借助第三方应用kill掉running task提升service的优先级提高se

2013-08-20 21:20:53 206

原创 引用传递和值传递

晚上看到一篇文章是介绍c++里引用和指针的,里面有一段话说值传递和引用传递的结果是不一样的,然后马上写了一段代码试了一下,果然是这样,储存在栈内存的变量(基本类型,string等)进行传递指是不会被改变的,而引用则会改变,因为引用指向堆内存,任何改变都会使其改变。   附上原文:从概念上讲。指针从本质上讲就是存放变量地址的一个变量,在逻辑上是独立的,它可以被改变,包括其所指向的地址的改

2013-08-19 22:53:18 130

转载 留着看

汇总笔者经历了一些来自百度,360,淘宝,腾讯,高通中国,htc上海的电话面试及现场面试,还有笔试相关题目百度:百度在北京中关村上地七街奎科科技大厦,不大但是很安静的一个办公地点。百度技术面试分为两轮,第一轮基础技术面试,一般为项目负责人,主要考察基本知识及知识广度,第二轮面试一般为部门负责 人,主要考察技术深度。基础面试感觉个人答的还不错,主要询问了一些关于android基本知识的考察,

2013-08-19 22:37:55 102

原创 hashcode() 与 equals()

之前在淘宝的面试有一道题,问一个类要作为map的key需要重写哪个方法,当时完全没有这个概念,现在知道了来总结一下equals和hashcode。      一般来说要作为key需要重写equals方法,来保证唯一性(key相等value也要相等),当然非散列的map和set不需要重写也没关系,如TreeSet,TreeMap,因为他们查找value时不需要使用hashcode,但是其他散列的

2013-08-19 22:31:55 122

转载 java反射详解

本篇文章依旧采用小例子来说明,因为我始终觉的,案例驱动是最好的,要不然只看理论的话,看了也不懂,不过建议大家在看完文章之后,在回过头去看看理论,会有更好的理解。下面开始正文。【案例1】通过一个对象获得完整的包名和类名?123456789101112131415package Refl

2013-08-19 15:31:20 116

原创 java多层嵌套语句跳入指定层次

在单循环语句中我们常常使用break来跳出当前循环,但是嵌套的循环语句并想要跳入指定层次就相对麻烦,今天看到一个小技巧。public void showExample() {      breakFor: for (int i = 0; i 100; i++) {          for (int j = 0; j 100; j++) {              i

2013-08-19 14:49:50 171

原创 java应用程序打包体验

之前帮一个老师弄过一个数字印刷测控条的软件,名字比较装逼其实内容非常简陋,只是将几种测控条的图形加作用显示出来并支持打开原始pdf文件已经ps文件,现在老师要求把这个文件打包一下。说实话学了这么久java那么就是在eclipse上跑,那么就是android在手机上跑,还没有打包过在pc上运行,本以为不会太麻烦,结果遇到不少麻烦,花了些时间。       碰到的一个麻烦就是我们在eclipse上

2013-08-19 10:23:16 128

原创 2013/8/14

1. 防止连续点击常用的两周方法:   1)申明一个布尔值为false,点击时判断是否为true,点击成功后改变为true,事件结束后变回false。该方法的好处是可以保证只能被点一次,坏处也很明显,何时变回false需要仔细考虑。   2)点击时判断两次点击间隔时间,public class Utils { private static long lastClickTime;

2013-08-14 14:20:00 123

原创 2013/8/13

记录下今天碰到的几个问题:1. 一个最多两行的textview,如果文字长度超过,则在末尾显示...。采用自定义控件的方法处理,解决方法总的来说就是当前文字加上...需要layout的行数与设置的maxlines比较,如果过长就减去一行循环即可。2. textview实现点击文字变色效果。该效果只要和button的背景一样使用一个自定义selector放在textc

2013-08-13 14:31:53 194

转载 Java泛型简明教程

你没有办法做到这些。事实上你不能够往一个使用了? extends的数据结构里写入任何的值。原因非常的简单,你可以这样想:这个? extends T 通配符告诉编译器我们在处理一个类型T的子类型,但我们不知道这个子类型究竟是什么。因为没法确定,为了保证类型安全,我们就不允许往里面加入任何这种类型的数据。另一方面,因为我们知道,不论它是什么类型,它总是类型T的子类型,当我们在读取数据时,能确保

2013-08-12 15:36:47 178

转载 阿里巴巴常考面试题及汇总答案

个人总结,仅自己学习用。愿与大家一起分享!如有错误请指正。一、String,StringBuffer, StringBuilder 的区别是什么?String为什么是不可变的?答:   1、String是字符串常量,StringBuffer和StringBuilder都是字符串变量。后两者的字符内容可变,而前者创建后内容不可变。2、String不可变是因为在JDK中St

2013-08-10 21:41:11 189

转载 ViewStub的使用

在开发应用程序的时候,经常会遇到这样的情况,会在运行时动态根据条件来决定显示哪个View或某个布局。那么最通常的想法就是把可能用到的View都写在上面,先把它们的可见性都设为View.GONE,然后在代码中动态的更改它的可见性。这样的做法的优点是逻辑简单而且控制起来比较灵活。但是它的缺点就是,耗费资源。虽然把View的初始可见View.GONE但是在Inflate布局的时候View仍然会被Infl

2013-08-08 13:37:04 95

转载 Android之Service与IntentService的比较

不知道大家有没有和我一样,以前做项目或者练习的时候一直都是用Service来处理后台耗时操作,却很少注意到还有个IntentService,前段时间准备面试的时候看到了一篇关于IntentService的解释,发现了它相对于Service来说有很多更加方便之处,今天在这里稍微来总结下我的心得。    首先IntentService是继承自Service的,那我们先看看Service的官方介

2013-08-08 13:30:31 114

转载 Android中proguard混淆第三方jar包及内部类

现在大部分项目都使用第三方的jar包,包括json解析的gson.jar,统计用户信息的umeng.jar,support-v4.jar等等等等,这些jar包本身基本都做了混淆,如果再用proguard混淆的话会出现错误,所以要通过-keep等方法不混淆这些jar中的内容,把到现在用过的整理下仅供参考~~ 1.项目中有gson的jar包怎么办?-keep class sun

2013-08-08 13:21:19 350

转载 android开发中防止内存溢出浅析

安卓的虚拟机是基于寄存器的Dalvik,它的最大堆大小一般是16M。但是安卓采用的是Java语言编写,所以在很大程度上,安卓的内存机制等同于Java的内存机制,在刚开始开发的时候,内存的限制问题会给我们带来内存溢出等严重问题。在我们不使用一些内存的时候,我们要尽量在Android或者其他平台上避免在运行其他程序时,保存必要的状态,使得一些死进程所带来的内存问题,应该尽量在关闭程序或者保存状态的时候

2013-08-08 10:04:31 127

原创 Thread.setDaemon(true); 守护线程

Daemon Thread 守护线程,Java中可以这样认为:守护主线程(main thread)的线程,与main thread同生共死。默认创建的线程是不是守护线程,要看创建它的线程(父线程)是否守护线程,它与父线程一致。main线程不是守护线程。所以大部分,我们使用的创建的不是守护线程,想要让它成为守护线程,用thread.setDaemon(true)。这样它就与main同生共死了

2013-08-08 09:51:21 183

转载 Android 全局异常处理

CrashHandlerJava代码  package org.wp.activity;    import java.io.File;  import java.io.FileOutputStream;  import java.io.FilenameFilter;  import java.io.PrintWriter;  import ja

2013-08-07 10:14:23 157

转载 synchronized(this)与synchronized(class)

synchronized(class)很特别,它会让另一个线程在任何需要获取class做为monitor的地方等待.class与this做为不同的监视器可以同时使用,不存在一个线程获取了class,另一个线程就不能获取该class的一切实例. 根据下面的代码自行修改,分别验证下面的几种情况:synchronized(class)synchronized(this)-

2013-08-07 10:13:08 100

转载 Android TextView中文字通过SpannableString来设置超链接、颜色、字体等属性

在Android中,TextView是我们最常用的用来显示文本的控件。  一般情况下,TextView中的文本都是一个样式。那么如何对于TextView中各个部分的文本来设置字体,大小,颜色,样式,以及超级链接等属性呢?下面我们通过SpannableString的具体实例操作来演示一下。   res-layout-main.xml[html] v

2013-08-07 09:17:15 139

转载 Java线程中sleep()、wait()和notify()和notifyAll()、yield()、join()等方法的用法和区别

Java线程中sleep()、wait()和notify()和notifyAll()、suspend和resume()、yield()、join()、interrupt()的用法和区别从操作系统的角度讲,os会维护一个ready queue(就绪的线程队列)。并且在某一时刻cpu只为ready queue中位于队列头部的线程服务。但是当前正在被服务的线程可能觉得cpu的服务质量不够好,

2013-08-05 15:04:40 133

原创 popupwindow实现点击外部及返回键window隐藏

本来是比较容易的一个问题,只需要setBackgroundDrawable(new BitmapDrawable());setTouchable(true);setOutsideTouchable(true);setFocusable(true);setTouchInterceptor(new View.OnTouchListener() );即可但是QA测试时碰到了一款L

2013-07-23 14:59:15 246

转载 关于AsyncTask与Handler

AsyncTask实现的原理,和适用的优缺点AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可以通过接口实现UI进度更新),最后反馈执行的结果给UI主线程.使用的优点: 简单,快捷 过程可控使用的缺点: 在使用多个异步操作和并需要进行Ui变更时,就变得复杂起来.

2013-07-22 13:32:26 142

原创 Bitmap的crop

public static Bitmap bitmapCrop(Bitmap bmpSrc, Rect rect){if(bmpSrc == null || rect == null)return null;Bitmap bm = Bitmap.createBitmap(rect.right - rect.left, rect.bottom - rect.top, bmpSrc.g

2013-07-19 16:14:54 175

转载 自定义view-文本自动换行

protected void onDraw(Canvas canvas) {        FontMetrics fm = mPaint.getFontMetrics();            float baseline = fm.descent - fm.ascent;     float x = 0;    float y =  baseline;  //由于系统基于

2013-07-19 10:13:50 257

转载 实现点击旋转,再点暂停动画

rotate.xml:"1.0" encoding="utf-8"?>  "http://schemas.android.com/apk/res/android">              android:fromDegrees="0"          android:toDegrees="359"          android:duration="50

2013-07-16 16:49:50 210

原创 AtomicBoolean初见

java.lang.Object      java.util.concurrent.atomic.AtomicBoolean继承自Object。用法            其实就是在这个Boolean值的变化的时候不允许在之间插入,保持操作的原子性方法和举例            这个类就没有几个方法,主要的就个,我们看一看compareAndSet(boolean expect, bool

2013-07-15 09:42:16 342

原创 popwindow

LayoutInflater inflater = LayoutInflater.from(this); View layout = inflater.inflate(R.layout.popup, null); pop =new PopupWindow(layout, LayoutParams.FILL_PARENT, LayoutPar

2013-07-08 19:38:34 155

转载 Task 和Activity相关

这段时间在做一个项目,发现对Task和Activity掌握的还是不牢固。把相关知识整理在这里,方便查阅,有几个Flag没看明白啥意思,也没 测试出来效果如何。。。  android:allowTaskReparenting    用来标记Activity能否从启动的Task移动到有着affinity的Task(当这个Task进入到前台时)——“true”,表示能移 动,“false”,

2013-07-08 10:15:58 134

转载 Android的Activity和Tasks详解

Activity和Tasktask就好像是能包含很多activity的栈。 默认情况下,一个activity启动另外一个activity时,两个activity是放在同一个task栈中的,第二个activity压入第一个 activity所在的task栈。当用户按下返回键时,第二个activity从栈中弹出,第一个activity又在当前屏幕显示。这样,从用户角度 来看,这两个activi

2013-07-08 10:15:29 102

转载 android onNewIntent

在Android应用程序开发的时候,从一个Activity启动另一个Activity并传递一些数据到新的Activity上非常简单,但是当您需要让后台运行的Activity回到前台并传递一些数据可能就会存在一点点小问题。首先,在默认情况下,当您通过Intent启到一个Activity的时候,就算已经存在一个相同的正在运行的Activity,系统都会创建一个新的Activity实例并显示出来

2013-07-08 09:44:38 137

转载 Android Permission 大全

Android Permission大全出自1.0 SDK中记录着新改变的访问权限许可。程序执行需要读取到安全敏感项必需在androidmanifest.xml中声明相关权限请求,Android开发网已经翻译并使用中英文对照,完整列表如下:   android.permission.ACCESS_CHECKIN_PROPERTIES允许读写访问"properties"表在checkin数据

2013-07-04 15:57:21 112

空空如也

空空如也

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

TA关注的人

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