随笔分类 - Android经验总结
摘要:在Android的线程通信当中,使用频率最多的就是Android的消息处理机制(Handler.send()、View.post()、Asynctask.excute()等等都使用到了消息处理机制)。Android中UI线程默认实现了该机制,其它工作线程要想跟UI线程一样拥有该机制,就必须人为去实现该机制,该机制的实现也相当简单暂且忽略。对于Android里的消息处理,涉及到Handler,Looper,Message,Message Queue等概念。Message:消息,其中包含了what(消息ID),obj(消息处理对象,这是引起泄漏的主要原因,下面会谈到)以及其它处理的数据(arg1.
阅读全文
摘要:官方网站1、谷歌安卓开发者页面这里是主站点,在这您可以找到一切资源帮助您开始安卓开发。此站包含了很多关于学习基础知识的资源,完整的API引用,以及你开始开发所需的各种工具。此站共分为五个部分:作为初学者,你应该从工具开始,这部分讲解了如何安装安卓SDK。教程为你提供了关于安卓的基本介绍,教给你如何写出你的第一个程序。它包括很多的资源,即便成为高级程序员你仍需阅读这里面的文章。API指南是对于不同API更技术性的手册,在更加深入理解安卓内部工作方面十分有用。参考手册包含关于安卓库的完整的类引用。在Google Services部分你会找到更多库的信息,这些库可以让你连接到Google的服务,例如
阅读全文
摘要:LRU Cache数据结构的介绍可以参考前面的http://www.cnblogs.com/XP-Lee/p/3441555.html。 本文以Android LRUCache来做一个简单的介绍。我们已经知道LRU Cache是一个hash map+双向链表的数据结构,那么在Android的Java自然也逃不出这个框,谷歌在Android3.1(v4 library也支持)之后提供了一个封装此数据结构实现的LRUCache类。Android LRUCache访问数据 LRUCache暴露了三个线程安全的方法get(K)、put(K)和remove(K),通过这三个方法,我们可以操作ca...
阅读全文
摘要:对于AbsListView子类,假设它的宽高是自适应的,你会发现getView()和getCount()会被疯狂的反复调用。即使在AbsListView子类设置完adapter后,getView()和getCount()也会被疯狂的调用10几次甚至更多。原因就在于measure过程,AbsListView子类会包含很多个item,而且由于AbsListView和Adapter机制的关系,会尽可能的将一系列item显示在屏幕中,当然这些item的父容器都是AbsListView子类。 在Android中View的布局机制分成两个阶段:measure和layout。在measure阶段时主要...
阅读全文
摘要:layout mechanism Android中View的layout mechanism主要分为两个阶段:measure阶段和layout阶段。layout mechanism按照一定的顺序进行,总体上来讲是先measure然后layout。一、measure阶段 以父容器提供的宽高参数作为限制条件,计算本身的大小(宽高)。这个过程需要调用final方法measure(int, int)完成。根据源码,我们可以知道实际的measure过程却是由回调方法onMeasure(int, int)来进行。因此我们常常可以看到在View的子类中,会根据需要,有重写方法onMeasure(int,..
阅读全文
摘要:转载自http://blog.csdn.net/linghu_java/article/details/8595717 Android中加载一个Bitmap(位图)到你的UI界面是非常简单的,但是如果你要一次加载一大批,事情就变得复杂多了。在大多数的情况下(如ListView、GridView或者ViewPager这样的组件),屏幕上的图片以及马上要在滚动到屏幕上显示的图片的总量,在本质上是不受限制的。像这样的组件在子视图移出屏幕后会进行视图回收,内存使用仍被保留。但假设你不保留任何长期存活的引用,垃圾回收器也会释放你所加载的Bitmap。这自然再好不过了,但是为了保持流畅且快速加载的UI,.
阅读全文
摘要:1 /* 2 * Copyright (C) 2011 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache....
阅读全文
摘要:1 package android.util; 2 3 import java.util.LinkedHashMap; 4 import java.util.Map; 5 6 /** 7 * A cache that holds strong references to a limited number of values. Each time 8 * a value is accessed, it is moved to the head of a queue. When a value is 9 * added to a full c...
阅读全文
摘要:Android使用Linux的进程管理机制,以进程为单位分配虚拟地址空间。为了安全考虑,Android的不同进程之间是相互隔离的(进程之间被禁止直接交互)。如果进程间需要通信,必须通过Android的Linux内核提供的IPC机制实现间接通信。Linux使用的进程间通信有Socket、Signal、Pipe、Message Queue、Semaphore、Shared Memory等。但是,这些IPC机制要么效率低下要么不适合封装给上层复用,所以取而代之的是使用Binder。 Binder是Android对Linux内核层的一个扩展,属于一个字符驱动设备,Android便是通过这个驱动程...
阅读全文
摘要:转载自http://blog.csdn.net/codingandroid/article/details/8495074自定义progressbar现在要自定义一个等待的时候转动的小圈,相信大家也都嫌系统自带的很难看吧??如果要自定义那些系统的组件都有一个法子,那就是看系统的是怎么写的。看下系统的progressbar的方法:首先看android的系统的style.xml的文件,系统的样式定义都在里面 android-sdk-windows\platforms\android-8\data\res\values 目录下打开style.xml,搜索ProgressBar。可以看到系统是这样定义
阅读全文
摘要:转载自:http://www.eoeandroid.com/thread-173973-1-1.html一、细说layout_weight 目前最为推荐的Android多屏幕自适应解决方案。 该属性的作用是决定控件在其父布局中的显示权重,一般用于线性布局中。其值越小,则对应的layout_width或layout_height的优先级就越高,一般横向布局中,决定的是layout_width的优先级;纵向布局中,决定的是layout_height的优先级。 传统的layout_weight使用方法是将当前控件的layout_width和layout_height都设置成fill_parent..
阅读全文
摘要:转载自http://jingyan.baidu.com/article/454316aba27e49f7a7c03ab1.html当我们通过eclipse开发Android应用时,会连接真机会使用模拟器进行仿真,有时候启动失败,会提示这样的错误。 工具/原料EclipseCMD命令窗口 方法/步骤1首先通过CMD启动adb服务。这个时候会提示启动失败。 2服务启动失败的原因有很多,但一般是端口绑定失败。我们来查看一下端口绑定信息。如图所示,真的是端口绑定出了问题。 3我们来看看哪个服务占用了这个端口。这里面有2个进程占用了这个端口。 4我们进入任务管理器,关闭这个进程。其中824进程是我的..
阅读全文

浙公网安备 33010602011771号