`

android第三周小结

 
阅读更多
1. 系统自带的通讯录应用,联系人名单保存在data/data/com.android.providers.contacts/databases/contats2.db,通过select * from contacts可以查询

2. 系统中的每个AppWidget都有一个数字标识

3. android系统中的每个application跑在单独的Process中

4. activity、service、ContentProvider必须在manifest中声明,但是BroadcastReceiver可以在代码中动态注册

5. activity的back stack是一个Last In First Out模型

6. activity最重要的生命周期方法是onCreate()和onPause(),前者需要完成activity的初始化工作,后者需要完成重要数据的持久化

7. 在屏幕横竖屏切换的时候,activity会被destroy,然后recreate

8. 从android3.0之后,引入了fragment和loader机制,之前的平台是没有的

9. android系统有多任务机制,设备的HOME页面是大多数任务的开始页面。有多个task,也就有多个back stack

10. 在back stack中的activity永远不会重新排列,所以如果一个activity被多次引用,将会创建多个实例

11. 当由于系统释放资源,而destroy掉activity之后,系统依然会记得activity在back stack中有一席之地。当重新显示该activity时,需要recreate,而不是resume

12. 可以在manifest中配置task管理机制,但一般推荐使用默认机制

13. 通过startService()方法启动的service,生命周期长于启动它的component。通过bound方式绑定的service,生命周期和绑定它的component相同

14. service是跑在所属application的主thread中,不会默认新开thread,所以需要编码创建新thread
分享到:
评论
1 楼 kyfxbl 2011-07-19  
15. service如果绑定到一个前台activity,则不太可能被kill。如果一个service被kill之后,会在系统获得足够的资源之后restart

16. 如果不需要同时处理多个请求,也不需要绑定到activity,可以继承IntentService,比直接继承Service方便一些

17. 用startService()方法启动的service的生命周期是onCreate()->onStartCommand()->onDestroy()。用bind()方法启动的service的生命周期是onCreate()->onBind()->onUnbind()->onDestory()

18. android自带的ContentProvider在android.provider包中声明了

19. 使用Cursor抛出了CursorIndexOutOfBoundsException,是因为没有先调用cursor.moveToFirst()方法

20. 所谓Intent的late run-time binding,其实是指的implicit intent,如果是explicit intent,就没有延迟绑定

21. implicit intent的action和data通常是成对出现的

22. activity如果要接受implicit intent的话,其intent-filter一定要加上DEFAULT CATEGORY。因为如果使用了implicit intent,android会自动调用intent.addCategory()方法,加上DEFAULT CATEGORY。而且every category in the Intent object must match a category in the IntentFilter。所以如果没有在intent-filter里加上DEFAULT CATEGORY,则implicit intent无法匹配通过

23. Intent匹配过程总结:如果是explicit intent,则直接找到指定的组件,如果没有找到,则抛出异常。如果是implicit intent,则android系统会把所有的组件都列出来,然后和intent设置的action、category、data逐一匹配。如果只有一个匹配结果,则直接调用,如果没有匹配结果,就抛出异常,如果有多个匹配结果,则让用户选择使用哪个组件来响应intent

相关推荐

    安卓知识小结第一章

    【Android知识小结第一章】 本章节主要涵盖了Android开发中的一些核心知识点,特别是针对面试中常见的问题进行了总结。以下是对这些知识点的详细解释: 1. 开启多进程:在Android中,可以通过在AndroidManifest....

    Android问题小结

    本资料包"Android问题小结"是针对Android开发者的一个宝贵资源集合,涵盖了多个方面的知识,包括事件分发机制、设计模式、图层管理、属性动画、框架使用、应用安全以及个人职业发展规划等。 首先,"技术交流--...

    Android异步加载图像小结 (含线程池,缓存方法).rar

    在Android应用开发中,图像加载是一个常见的...以上就是关于“Android异步加载图像小结(含线程池,缓存方法)”的主要知识点。在实际应用中,开发者应结合项目需求,合理选择和优化这些技术,以提供流畅的用户体验。

    Android客户端性能软件测试小结

    此外,市场上还有许多第三方性能监测工具,如Firebase Performance Monitoring、New Relic等,它们能提供更全面的性能指标和详细的性能报告。 在评估客户端性能是否达标时,测试人员需要综合考虑各项指标,并根据...

    android开发揭秘PDF

    第3章 Android程序设计基础 3.1 Android程序框架 3.1.1 Android项目目录结构 3.1.2 Android应用解析 3.2 Android的生命周期 3.3 Android程序U设计 3.4 小结 第4章 用户界面开发 4.1 用户界面开发详解 4.1.1 用户...

    Android异步加载图像小结 (含线程池,缓存方法).zip

    在Android开发中,异步加载图像是一项至关重要的技术,特别是在处理大数据量的...通过阅读"Android异步加载图像小结 (含线程池,缓存方法).doc"和解压"项目说明.rar"中的示例代码,可以更深入地学习和实践这些技术。

    Android异步加载图像小结 (含线程池,缓存方法).doc.zip

    "Android异步加载图像小结(含线程池,缓存方法)"这个文档详细讲解了如何在Android环境中高效、异步地加载图片,同时利用线程池和缓存策略优化性能。以下是对这些知识点的详细说明: 1. **异步加载**: - 异步...

    android数据库小结

    ### Android数据库操作详解 #### 一、概述 在软件开发领域,数据管理是不可或缺的一环。对于Android开发者而言,SQLite数据库作为内置的关系型数据库解决方案,为应用提供了强大的数据存储功能。本文将详细介绍...

    Android项目异步加载图像小结 (含线程池,缓存方法).rar

    3. 缓存方法:详细讲解了在Android项目中实现图像缓存的几种常用方法,包括内存缓存、磁盘缓存和第三方库缓存。这些缓存方法可以有效减少网络请求次数,降低服务器压力,提高图像加载速度。 4. 实践案例分析:通过...

    《Android应用开发揭秘》附带光盘代码.

     第3章 Android程序设计基础  3.1 Android程序框架  3.1.1 Android项目目录结构  3.1.2 Android应用解析  3.2 Android的生命周期  3.3 Android程序U设计  3.4 小结  第4章 用户界面开发  4.1 用户界面开发...

    Android(经典实例).

    第3章 Android高级控件的开发及应用 第4章 手机用户界面的开发 第5章 手机通信服务及手机控制 第6章 手机的自动服务功能 第7章 手机文件I/O与数据库的应用 第8章 手机网络应用 第9章 手机的Google服务功能 第10章 ...

    Android应用开发揭秘pdf高清版

    第3章 Android程序设计基础 3.1 Android程序框架 3.1.1 Android项目目录结构 3.1.2 Android应用解析 3.2 Android的生命周期 3.3 Android程序U设计 3.4 小结 第4章 用户界面开发 4.1 用户界面开发详解 4.1.1 用户...

    《Android应用开发揭秘》源码

     第3章 Android程序设计基础  3.1 Android程序框架  3.1.1 Android项目目录结构  3.1.2 Android应用解析  3.2 Android的生命周期  3.3 Android程序U设计  3.4 小结  第4章 用户界面开发  4.1 用户界面开发...

Global site tag (gtag.js) - Google Analytics