自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Android Farm

我的安卓农场

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

原创 [笔记]Sensor概述

传感器[ Android支持的传感器 ]1 分为三大类:- 动作传感器:加速计,重力传感器,陀螺仪,旋转矢量传感器- 环境传感器:气压计,光度计,温度计- 位置传感器:方向传感器,磁力计2 各种传感器2.1 TYPE_ACCELEROMETER - 硬件- Measures the acceleration force in m/s2 t

2013-07-26 19:27:47 1191

原创 基于Andoird 4.2.2的Account Manager源代码分析学习:AccountManager的简要工作流程

- 对于帐号管理,由接口IAccountManager描述其相关的一组行为- AccountManagerService是Android的系统服务。它实现了接口IAccountManager定义的这一组行为。这些行为的实现依赖应用程序中定义的Authenticator。- AccountManager是一个面向应用程序开发的组件。它提供一组对应于IAccountManager协议的应用程序

2013-07-03 14:21:49 1971 1

原创 基于Andoird 4.2.2的同步框架源代码学习——同步发起端

关键组件:ContentResolverContentServiceSyncManagerSyncManager.ActiveSyncContextSyncManager.SyncOperationSyncManager.SyncHandlerContentResolver外部的应用程序通过调用ContentResolve.requestSync()静态方法发起同步:

2013-07-01 16:32:35 2071

原创 基于Andoird 4.2.2的同步框架源代码学习——同步提供端

Android同步框架同步(synchronization)允许用户将远程数据下载到新的设备上,同时将设备上的帐户数据上传到远端。同步还保证用户能够看到最新的数据。开发者自然可以通过自己的方式来设计实现同步机制。但是Android系统还是提供了一个可插拔的同步框架。这个框架自动化的执行以下任务:检查网络可用性根据用户设定的选项规划、执行同步重启已经停止的同步开发者需要向

2013-07-01 11:14:55 3030

原创 基于Andoird 4.2.2的Account Manager源代码分析学习:创建选定类型的系统帐号

AccountManager.addAccount() public AccountManagerFuture addAccount(final String accountType, final String authTokenType, final String[] requiredFeatures, final Bundle ad

2013-06-25 16:11:29 3417 3

原创 基于Android 4.2.2的Account Manager源代码分析学习:设备上帐号类型列表的获取

获取系统中注册的帐号类型列表是一个典型的用例。比如,在系统设置界面中选择“添加帐户”,这是,系统显示一个所有支持的帐户类型的列表界面(ChooseAccountActivity)供用户点选。另外,在Contacts/Calendar等应用程序中,也会向系统请求创建帐户或者现实帐户列表。背后的操作是统一由Android Framework提供的。应用程序只要将设置好的intent发送出去即可。在

2013-06-25 08:22:04 9690 8

原创 基于Andoird 4.2.2的Account Manager源代码分析学习:AccountManager的初始化

应用程序开发者并不直接请求AccountManagerService服务。帐号相关的处理,由AccountManager提供接口。按如下的方式获得AccountManager实例: AccountManager accountManager = AccountManager.get(context);实际上get()方法中,调用了Context.getSystemService(

2013-06-24 23:46:21 2907

原创 基于Andoird 4.2.2的Account Manager源代码分析学习:AccountManagerService系统服务的添加

从启动说起Android系统加载时,首先启动init进程,该进程会启动Zygote进程。Zygote进程执行/system/bin/app_process程序。app_process程序在执行中,通过AppRuntime::start()函数来创建虚拟机实例,并注册JNI方法。int main(int argc, const char* const argv[]){ ..

2013-06-24 13:30:29 1665

原创 读书:《Android系统源代码情景分析》- 简述Android应用程序进程的启动过程

- Overview1. AMS启动一个应用程序组件时,如果发现其所属应用的进程没有启动,则请求Zygote进程启动之2. Z进程复制自身,使得app进程获得一个VM实例拷贝,能够运行Java语言开发的组件3. App进程启动时,获得Binder线程池和消息循环,前者用于IPC,后者用于线程之间的协作- 几个组件1. com.android.internal.os.Zy

2013-05-12 14:39:51 1269

原创 读书:《Android系统源代码情景分析》- 简述Zygote进程和System进程的启动

- Overview1. 所有应用程序进程和System进程都由Zygote进程创建:fork()2. Z进程启动时内建一个VM实例3. 系统进程和App进程复制这个虚拟机实例4. Z进程启动之后马上启动System进程5. System进程启动系统关键服务:AMS, ContentService, WMS, PMS- Zygote的启动1. 由Android系

2013-05-12 12:10:29 1232

原创 读书:《Android系统源代码情景分析》- 简述从应用层执行硬件访问

原著作者:http://blog.csdn.net/column/details/androidluo.html- 访问硬件驱动程序的步骤:1. 打开设备文件2. 进行read/write操作3. 关闭设备文件- 硬件抽象层硬件抽象层以模块形式管理各个硬件访问接口。每个模块对应一个按一定规则命名的so库硬件抽象层最终还是通过上面的步骤来访问设备。硬件抽象层由系统统一加载,调用者通过ID调用。- 应

2013-05-12 00:39:06 1427

原创 【摘录】学习WindowServiceManager

主要参考:http://blog.csdn.net/luoshengyang/article/details/8462738WindowManagerService同时管理多个窗口:- WMS计算“计算出各个窗口的可见区域”- “WindowManagerService服务只要将它所管理的各个窗品的位置以及大小告诉SurfaceFlinger服务,后者可以帮帮它计算出各个窗

2013-05-04 11:41:07 819

原创 浅谈带有复杂布局列表项的列表视图

首先看ListView。构建基于字符串数组的列表视图是Android基本教程里面的东西,这里就不说了。这里根据个人经验说说列表项包含比较复杂的布局的列表视图。先澄清一下术语:1. 列表视图:指基于类ListView的展示同类内容条目的视图。列表视图负责响应用户对列表的操作。2. 列表项:指列表中展现某一具体内容个体的视图。也可以封装一些不可见的信息。3. 适配器:这里使

2013-05-04 00:30:52 1398

原创 Android:Activity和Fragment生命周期实践

关于活动和片段的生命周期,看了忘、忘了看。一提生命周期,大概一想,似乎明白,仔细一想,似乎不那么明白。索性,一不做二不休,写了个活动加上两个片段,覆盖所有的生命周期方法,打上Log一顿摆弄,直观的东西就出来了。所有的测试包括:1. 从Launcher启动活动2. 按回退键退出活动3. 按Home键将活动切入后台4. 将后台的活动切回前台5. 片段加载6. 片段2替换片段

2013-05-01 17:37:06 1050

原创 Android文档笔记:滚动手势动画

- 通过滚动器来收集由触摸事件产生滚动动画的数据- Scroller, OverScroller(包含相关方法,可以指出手势已经到底内容的边界)- 建议使用OverScroller:更好的兼容老设备- 滚动器跟踪滚动位移,但实际上并不绘制内容,不会自动将位置数据作用于你的视图- 你自己负责获取位置并按一定的频率使用新的坐标:这样可以使滚动平滑理解滚动术语- 滚动是移

2013-04-24 21:38:49 5109

原创 Android文档笔记:动画与图形(一)

概述动画Android框架提供两套动画系统:属性动画:从Android 3.0开始引入允许你对任何对象的属性进行动画处理,包括不会渲染到屏幕上的对象视图动画:老的动画系统只能用于视图容易使用Drawable动画:按顺序播放可绘制资源,类似电影2D和3D图形画布和可绘制对象:Android提供了一套Vie

2013-04-24 14:22:03 811

翻译 Android学习笔记:搜索(一)- 概述

- 为了用户体验的一致性,Android提供了一个搜索框架- 搜索框架提供两种搜索模式:  * 搜索对话框  * SearchView- 采用任一模式,你可以:  * 激活语音搜索  * 根据用户最近的查询提供搜索建议  * 提供与应用程序数据实际内容相匹配的自定义搜索建议  * 在系统全局的快速搜索框中提供你应用的搜索建议- 具体的搜索业务逻辑

2013-04-19 19:55:26 756

原创 由一道数据结构题目想到的

这题目是:已知指向单链表中段某结点的指针p,在不遍历链表的前提下删除当前结点。我们都知道,对于单链表这样的存在,必须在知道前驱地址的前提下才好删去当前结点。这就要求从头遍历链表,找到next指向当前结点的结点,然后让它的next跨过当前节点即可。但是不让遍历怎么办呢?在看了答案之后,我的情绪遭遇了一次小小的震荡。我把注意力收缩在封装了数据和指针的结点结构上——这已经是多年的

2013-04-18 17:30:31 757

原创 高效的显示位图(六):在UI上显示…

- 分别在ViewPager和GridView中加载、显示位图- 参见原文。

2013-04-18 17:00:10 785

原创 高效的显示位图(五):管理位图内…

- 除了缓冲机制,还有其它措施可以用来为垃圾回收和位图重用增加便利- 针对不同版本:Android 2.2及以前版本,当垃圾回收启动,应用中的线程全部停止,这导致性能损失,Android2.3.3引入并发垃圾回收机制Android2.3.3及更早版本,像素数据存储在本地内存,与为图对象(存储于虚拟机堆)本身隔离。本地内存数据无法以可以预知的方式释放,致使程序可能超过内存限制而崩溃。A

2013-04-18 17:00:08 954

原创 高效的显示位图(四):缓冲位图

- 一次加载一组大图- 用内存或磁盘缓冲来解决反复加载图片的问题(ListView,GridView,ViewPager等)- 本篇介绍如何通过内存和磁盘位图缓冲来改善UI在加载多个图片时的灵敏度和流畅性使用内存缓冲- 内存缓冲消耗宝贵的应用内存空间来提供位图的快速访问-LruCache类正好适合此项任务:在一个强引用的LinkedHashMap中保留最近引用的对象,在缓冲达到上限

2013-04-18 17:00:06 945

原创 高效的显示位图(二):高效加载大…

- 图像经常比应用UI需要的大- 理想的,值加载低分辨率版本到内存中- 低分辨率版本应当与显示它的界面元素匹配- 本篇讲解如何不超过应用内存限制解码大图片,途径是加载更小的二次采样版本-----------------------------------------------------------------------------------------读取位图尺寸和类型-

2013-04-18 16:59:59 859

原创 高效的显示位图(一):概述

- 用常规技术处理和加载位图对象- 稍有不慎,位图会迅速消耗掉应用的可用内存,并引发OOM异常:java.lang.OutofMemoryError: bitmap size exceeds VMbudget- Android应用需要灵活应对位图加载的原因:每个应用的内存使用有上限位图占用大量内存应用UI频繁的需要同时加载多个位图。ListView,GridView和Vie

2013-04-18 16:59:57 748

原创 Android文档学习:Task

Task用户为了完成某个功能而执行的一系列操作就形成了一个Activity序列,这个序列在Android应用程序中就称之为任务,它是从用户体验的角度出发,把一组相关的Activity组织在一起而抽象出来的概念。~/Android$ adb shell dumpsys activity如果我们想要设置了"singleTask"启动模式的Activity在新的任务中

2013-04-18 16:59:43 713

原创 应用程序组件:应用程序基础

- 每个安卓应用都运行在它自己的安全沙箱:安卓是多用户Linux系统,每个应用程序都是一个独立的用户每个应用都被分配到一个唯一的用户ID,应用只能访问自己的文件各进程拥有自己的虚拟机(VM),所以运行的各应用之间是隔离的缺省的,各应用跑在自己的进程。应用的任意组件被调用,安卓即启动进程。- 最小特权法则:每个应用只访问其工作需要且仅需要的组件。- 应用有途径与其它应用功效数据

2013-04-18 16:59:41 721

原创 定位与传感器:定位和地图

- 定位和基于地图的应用带来有趣的体验- 通过android.location包下的组件以及Google Maps AndroidAPI来为你的应用提供这样的功能位置服务- 核心组件:LocationManager(系统服务),提供探测位置和方向的API- 通过调用getSystemService(Context.LOCATION_SERVICE)获取LM实例- 获取实例后,可以做的

2013-04-18 16:59:39 793

原创 Android的系统服务

Android系统提供了许多系统服务。我们通过名称来向系统请求这些服务,如: getSystemService(Context.LOCATION_SERVICE)这里将这些服务罗列一下,对了解Android的系统功能应该有所帮助。WINDOW_SERVICE ("window")The top-level window manager in which you can p

2013-04-18 16:59:37 787

原创 Android培训:在应用中使用定位

- 关键组件:LocationManager, LocationProvider, LocationListener,Geocoder- 移动设备通常随身携带- 位置感知是移动应用独特的功能- 获取位置信息冰善用之,可以带来更多的情境体验使用定位管理器- 在应用接收定位信息更新之前,有一些必要的设置步骤声明相关权限- 仅使用基于网络的位置信息提供者:ACCESS_COARSE_

2013-04-18 16:59:35 772

原创 执行网络操作(二):管理网络的使…

- 如果程序频繁访问网络,应当提供给用户相关的设置,允许用户控制程序的数据使用习惯:> 程序同步数据的周期> 是否仅在Wifi下执行上传下载操作> 是否允许在漫游时使用数据> 这样,用户才不会断然禁止你的程序访问网络- 参考:> OptimizingBattery Life > TransferringData Without Draining the Battery检查设备

2013-04-18 16:59:32 784

原创 执行网络操作(一):连接到网络

- 执行网络操作需要的权限: android:name="android.permission.INTERNET" /> android:name="android.permission.ACCESS_NETWORK_STATE" />选择HTTP客户端- HttpURLConnection:2.3+推荐使用- Apache HttpClient:太大- 都支持HTTPS,流上

2013-04-18 16:59:30 972

原创 Android用户界面(三):线性布局…

LinearLayout布局权重- android:layout_weight- 缺省为0:只占据自己规定的空间- 例子

2013-04-18 16:59:27 635

原创 Android用户界面(二):布局

- 两种方式声明布局:> XML文件> 在运行时初始化布局元素如何书写XML...加载XML资源...属性- ID> 新建资源:android:id="@+id/my_button"> 引用已有资源:android:id="@android:id/empty"- 布局参数> XML布局文件中的"layout_xxx"属性> ViewGroup的布局参数用以约束其所

2013-04-18 16:59:25 604

原创 Android用户界面(一):概览

- 用户界面是用户所能看到和交互的全部- 全部的用户界面都在View和ViewGroup的基础上构建> View:可现实和交互的对象> ViewGroup:包含View和其它ViewGroup的对象,定义UI布局UI布局- UI用View和ViewGroup的层次结构来定义:UI组件安卓提供多种标准UI布局,你仅需要进行调用。每种UI组件都有相关API供使用,如动作条,对话框

2013-04-18 16:59:22 609

原创 Android绑定服务(二):创建绑定…

- 核心:提供一个定义了客户端到服务端交互编程接口的IBinder- 定义接口的三条途径:-- 扩展Binder类> 服务归应用私有,且跑在同一个进程> 实例由onBind()返回> 若服务仅仅为本应用的后台工作,那么推荐使用> 除非服务被其它应用或进程调用-- 使用Messenger> 接口需要跨进程工作>Handler:定义在服务中,Messenger基于之而向客户端

2013-04-18 16:59:20 667

原创 Android绑定服务(一):基础知识

- 客户/服务模式。- 允许组件绑定到服务,发送请求,接收响应,甚至执行进程间通信。- 不会无限期执行,只在被绑定期间生存。- 本篇涵盖的内容:如何创建绑定服务,以及如何进行绑定。- 一个绑定服务应当是Service类的一个实现。- 为了提供绑定,必须实现onBiind()回调方法。- 本方法返回一个IBinder对象,它定义了客户端组件所能够用来与服务交互的编程接口。- 客户端

2013-04-18 16:59:18 679

原创 Android文档笔记:通知(四)&nbsp…

- 对于可以知道确切进度的操作,使用“确定”形式的进度指示条- 对于不确切知道进度的,使用不确定形式的指示条- 进度条基于平台的ProgressBar类实现- 使用进度条:> 4.0及以后的版本:setProgress()> 早期版本:需要自定义通知布局,其中包含ProgressBar视图显示一个固定周期进度显示器- 调用setProgress(max,progress, fal

2013-04-18 16:59:16 699

原创 Android文档笔记:通知(三) - 启…

-当你从一个通知启动活动时,你必须保留用户所希望的导航体验:>按回退键应当通过应用正常的工作流将用户带回到Home屏。>点击“最近使用”则会将刚才启动的活动显示为一个单独的任务。- 要做到这一点,应当从一个全新的任务来启动活动-如何配置PendingIntent来得到一个全新的任务?这取决于你的活动的性质:常规活动:-这指的是,你启动的活动是应用程序正常工作流的一部分。此

2013-04-18 16:59:13 559

原创 Android进程与线程(三):跨进程…

- 安卓在远程过程调用(RPCs)的基础上提供一套跨进程通信(IPC)的机制。- 所谓IPC,就是一个方法被一个活动或其它组件调用,却在另外一个进程(即远程)执行,然后又将结果返回给调用者。-这使得需要将一个方法的调用和它的数据结构成操作系统能够理解的级别,从本地进程和地址空间传送到远程进程和地址空间。然后在那里重新组装数据并执行调用。计算结果按照这个套路反方向传输。- 安卓提供执行IPC

2013-04-18 16:59:11 575

原创 Android进程与线程(二):线程

主线程- 系统在应用程序启动时为它创建一个主线程。- 主线程负责将事件分发给对应的UI组件,包括绘制事件。- 应用程序也在主线程与安卓UI工具包(android.widget,android.view)中的组件进行交互。- 基于这样的原因,主线程也被称为“UI线程”。- 系统并不为应用程序的每个组件单独创建线程。所有运行于同一个进程内的组件都在UI线程中进行初始化。-系统对所有组

2013-04-18 16:59:09 620

原创 Android文档笔记:通知(二)

管理通知- 复用:当你需要为同一类型的时间多次发送通知的时候,切忌每次都创建新的实例。繁殖,应当考虑对先前使用的通知实例进行更新,添加或修改一些设定值。- Gmail:当新邮件到来,Gmail会在通知中递增邮件数量并显示每封邮件的摘要。这称为“堆积”通知。参见通知设计向导。更新通知- 已经发起的通知拥有一个ID-更新或者创建一个NotificationCompat.Bui

2013-04-18 16:59:07 595

空空如也

空空如也

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

TA关注的人

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