Android4高级编程目录第1章Android简介11.1一些背景信息21.1.1不远的过去21.1.2未来的前景21.2对Android的误解31.3Android:开放的移动开发平台31.4原生Android应用程序41.5AndroidSDK的特征51.5.1访问硬件(包括摄像头、GPS和传感器)51.5.2使用Wi-Fi、蓝牙技术和NFC进行数据传输61.5.3地图、地理编码和基于位置的服务61.5.4后台服务61.5.5使用SQLite数据库进行数据存储和检索71.5.6共享数据和应用程序间通信71.5.7使用Widget和LiveWallpaper增强主屏幕71.5.8广泛的媒体支持和2D/3D图形71.5.9CloudtoDeviceMessaging81.5.10优化的内存和进程管理81.6开放手机联盟简介81.7运行Android的环境91.8从事移动开发的原因91.9从事Android开发的原因91.9.1推动Android普及的因素101.9.2Android的独到之处101.9.3改变移动开发格局111.10开发框架简介111.10.1开发包中的资源121.10.2理解Android软件栈121.10.3Dalvik虚拟机141.10.4Android应用程序架构141.10.5Android库15第2章开始入手172.1Android开发182.1.1开始前的准备工作182.1.2创建第一个Android应用程序242.1.3Android应用程序的类型312.2面向移动设备和嵌入式设备的开发322.2.1硬件限制带来的设计考虑事项322.2.2考虑用户环境352.2.3Android开发362.3Android开发工具402.3.1Android虚拟设备管理器412.3.2AndroidSDK管理器422.3.3Android模拟器422.3.4Dalvik调试监控服务(DDMS)422.3.5Android调试桥(ADB)432.3.6HierarchyViewer和Lint工具432.3.7Monkey和MonkeyRunner43第3章创建应用程序和Activity453.1Android应用程序的组成部分463.2应用程序Manifest文件简介473.3使用Manifest编辑器543.4分离资源553.4.1创建资源553.4.2使用资源633.4.3为不同的语言和硬件创建资源663.4.4运行时配置更改683.5Android应用程序生命周期703.6理解应用程序的优先级和进程状态703.7AndroidApplication类简介723.7.1扩展和使用Application类723.7.2重写应用程序的生命周期事件733.8深入探讨AndroidActivity743.8.1创建Activity743.8.2Activity的生存期763.8.3AndroidActivity类81第4章创建用户界面834.1AndroidUI基本设计844.2AndroidUI的基础知识844.3布局简介854.3.1定义布局864.3.2使用布局创建设备无关的UI874.3.3优化布局904.4To-DoList示例934.5Fragment介绍1004.5.1创建新的Fragment1014.5.2Fragment的生命周期1014.5.3FragmentManager介绍1054.5.4向Activity中添加Fragment1054.5.5Fragment和Activity之间的接口1104.5.6没有用户界面的Fragment1114.5.7AndroidFragment类1124.5.8对To-DoList示例使用Fragment1124.6Androidwidget工具箱1164.7创建新视图1174.7.1修改现有的视图1184.7.2创建复合控件1224.7.3使用布局创建简单的复合控件1244.7.4创建定制的视图1244.7.5使用定制的控件1374.8Adapter简介1374.8.1部分原生Adapter简介1384.8.2定制ArrayAdapter1384.8.3使用Adapter绑定数据到视图139第5章Intent和BroadcastReceiver1455.1Intent简介1455.1.1使用Intent来启动Activity1465.1.2Linkify简介1535.1.3使用Intent广播事件1555.1.4LocalBroadcastManager1595.1.5PendingIntent简介1605.2创建IntentFilter和BroadcastReceiver1615.2.1使用IntentFilter为隐式Intent提供服务1615.2.2使用IntentFilter作为插件和扩展1705.2.3监听本地BroadcastIntent1735.2.4使用BroadcastIntent监控设备的状态变化1745.2.5在运行时管理ManifestReceiver176第6章使用Internet资源1776.1下载和分析Internet资源1776.1.1连接Internet资源1786.1.2使用XMLPullParser分析XML1796.1.3创建一个地震查看器1806.2使用DownloadManager1866.2.1下载文件1866.2.2自定义DownloadManagerNotification1876.2.3指定下载位置1886.2.4取消和删除下载1896.2.5查询DownloadManager1896.3使用Internet服务1926.4连接到GoogleAppEngine1926.5下载数据而不会耗尽电量的最佳实践194第7章文件、保存状态和首选项1957.1保存简单的应用程序数据1957.2创建并保存SharedPreference1967.3检索SharedPreference1977.4为地震查看器创建一个设置Activity1977.5首选项框架和PreferenceActivity概述2057.5.1在XML中定义一个PreferenceScreen布局2067.5.2PreferenceFragment简介2087.5.3使用PreferenceHeader定义PreferenceFragment的层次结构2087.5.4PreferenceActivity简介2097.5.5向后兼容性与PreferenceScreen2107.5.6找到并使用PreferenceScreen设置的SharedPreference2107.5.7SharedPreferenceChangeListener简介2117.6为地震查看器创建一个标准的PreferenceActivity2117.7持久化应用程序实例的状态2157.7.1使用SharedPreference保存Activity状态2157.7.2使用生命周期处理程序保存和还原Activity实例2157.7.3使用生命周期处理程序保存和还原Fragment实例状态2167.8将静态文件作为资源添加2187.9在文件系统下工作2187.9.1文件管理工具2187.9.2使用特定于应用程序的文件夹存储文件2197.9.3创建私有的应用程序文件2197.9.4使用应用程序文件缓存2207.9.5存储公共可读的文件220第8章数据库和ContentProvider2238.1Android数据库简介2238.1.1SQLite数据库简介2248.1.2ContentProvider简介2248.2SQLite简介2248.3ContentValue和Cursor2258.4使用SQLite数据库2258.4.1SQLiteOpenHelper简介2268.4.2在不使用SQLiteOpenHelper的情况下打开和创建数据库2288.4.3Android数据库设计注意事项2288.4.4查询数据库2288.4.5从Cursor中提取值2298.4.6添加、更新和删除行2308.5创建ContentProvider2328.5.1注册ContentProvider2338.5.2发布ContentProvider的URI地址2338.5.3创建ContentProvide的数据库2348.5.4实现ContentProvider查询2358.5.5ContentProvider事务2368.5.6在ContentProvider中存储文件2398.5.7一个ContentProvider的实现框架2408.6使用ContentProvider2448.6.1ContentResolver简介2448.6.2查询ContentProvider2448.6.3使用CursorLoader异步查询内容2478.6.4添加、删除和更新内容2498.6.5访问ContentProvider中存储的文件2518.6.6创建一个To-DoList数据库和ContentProvider2538.7将搜索功能添加到应用程序中2608.7.1使ContentProvider可搜索2618.7.2为应用程序创建一个搜索Activity2618.7.3将搜索Activity设置为应用程序的默认搜索Provider2638.7.4使用搜索视图微件2668.7.5由ContentProvider支持搜索建议2678.7.6在快速搜索框中显示搜索结果2708.8创建可搜索的地震ContentProvider2708.8.1创建ContentProvider2708.8.2使用地震ContentProvider2768.8.3搜索EarthquakeContentProvider2798.9本地AndroidContentProvider2858.9.1使用MediaStoreContentProvider2858.9.2使用ContactsContractContentProvider2868.9.3使用CalendarContentProvider293第9章在后台操作2979.1Service简介2989.1.1创建和控制Service2989.1.2将Service绑定到Activity3029.1.3地震监控Service示例3049.1.4创建前台Service3089.2使用后台线程3099.2.1使用AsyncTask运行异步任务3109.2.2IntentService简介3129.2.3Loader简介3139.2.4手动创建线程和GUI线程同步3139.3使用Alarm3159.3.1创建、设置和取消Alarm3169.3.2设置重复Alarm3179.3.3使用重复Alarm调度网络刷新3189.4使用IntentService简化Earthquake更新Service320第10章扩展用户体验32310.1操作栏简介32410.1.1自定义操作栏32510.1.2自定义操作栏来控制应用程序的导航行为32810.1.3操作栏操作简介33310.2向地震监控程序添加一个操作栏33310.3创建并使用菜单和操作栏操作项33910.3.1Android菜单系统简介34010.3.2创建菜单34110.3.3指定操作栏的操作34210.3.4菜单项选项34310.3.5添加操作View和操作提供程序34410.3.6在Fragment中添加菜单项34510.3.7使用XML定义菜单层次结构34510.3.8动态更新菜单项34710.3.9处理菜单选择34710.3.10子菜单和上下文菜单简介34810.4更新地震监控程序35110.5全屏显示35310.6对话框简介35510.6.1创建一个对话框35610.6.2使用AlertDialog类35610.6.3使用专门的输入对话框35710.6.4通过DialogFragment管理和显示对话框35810.6.5通过