Android开发艺术探索读书笔记(三)

看了这章内容也有不少时间,也自己写了些东西。但是总感觉讲得不是清楚明白,无意中发现这篇 

Android开发艺术探索读书笔记(三)

博客,感觉写的非常好。就借鉴了许多东西过来。“之所以自己这么看重,是因为这篇应该是读书笔记里最重要的一篇了,这篇能吃透的话,基本安卓app层玩的机制都能理解的很清楚了。所以我也倾注了全部的心血来写这篇,希望跟大家一起分享。” 

简单先说下:这里将第十章(Android的消息机制)、第九章(四大组件的工作过程)放在第八章(理解Window和WindowManager)前面的原因是:学习理解Window的知识最好需要先了解Activity的运行机制以及handler的工作原理,所以大家读主席这本书的时候也建议按照这个顺序来读这三章,对window的理解会更水到渠成,以上。如果看这篇前你还没有去看第二章的IPC机制,我强烈建议你看懂IPC再回来看这篇,会发现一切都变得非常清晰。热切期盼各位看完能有收获,有任何错误或者疑问都可在评论中给出,我会一一回复,感谢~

  1. 四大组件概述: 
    1) Activity的主要作用是展示一个界面并和用户交互,它扮演的是一种前台界面的角色。 
    2) Service是一种计算型组件,用于在后台执行一系列计算任务,但因为其本身还是运行在主线程中的,因此耗时的后台计算仍然需要在单独的线程中去完成。 
    3) BroadcastReceiver是一种消息型组件,用于在不同的组件乃至不同的应用之间传递消息。广播注册有两种方式,动态注册通过Context.registerReceiver()来实现,必须要应用启动才能注册;静态注册则在AndroidManifest文件中进行,应用安装时会被系统解析,不需要启动应用就可接收广播。 
    4) ContentProvider是一种共享型组件,用于向其他组件乃至其他应用共享数据。
  2. 下面我用UML图的形式来说明四大组件的工作过程:
  3. Activity的工作过程 Android开发艺术探索读书笔记(三) Android开发艺术探索读书笔记(三)    Android开发艺术探索读书笔记(三)  可以和下面这幅图对比一下看看。Android开发艺术探索读书笔记(三)
  4. Service 
    启动: 
    Android开发艺术探索读书笔记(三)Android开发艺术探索读书笔记(三)
    绑定: 
    Android开发艺术探索读书笔记(三)Android开发艺术探索读书笔记(三)
  5. BroadcastReceiver 
    注册(动态): 
    Android开发艺术探索读书笔记(三) 
    发送和接收: 
    Android开发艺术探索读书笔记(三)
  6. ContentProvider 
    1) 当ContentProvider所在的进程启动的时候,它会同时被启动并被发布到AMS中,这个时候它的onCreate要先去Application的onCreate执行。 
    2) 启动方式请看page363,这里就不画了,书上画的非常清晰易懂,就写几个tips 吧。 
    a. 应用启动的入口为ActivityThread的main方法,main方法会创建ActivityThread实例并创建主线程消息队列。 
    b. attach方法中远程调用AMS的attachApplication方法,并提供ApplicationThread用于和AMS的通信。 
    c. attachApplication方法会通过bindApplication方法和H来调回ActivityThread的handleBindApplication,这个方法会先创建Application,再加载ContentProvider,然后才会回调Application的onCreate方法。 
    d. ContentProvider的multiprocess属性决定了ContentProvider是否是单例(false时),一般都用单例。 
    e. ContentResolver的具体类是ApplicationContentResolver,当ContentProvider所在进程未启动时,第一次访问它会触发ContentProvider的创建以及进程启动。 
    3) query流程 
    Android开发艺术探索读书笔记(三)

看了这章内容也有不少时间,也自己写了些东西。但是总感觉讲得不是清楚明白,无意中发现这篇 

Android开发艺术探索读书笔记(三)

博客,感觉写的非常好。就借鉴了许多东西过来。“之所以自己这么看重,是因为这篇应该是读书笔记里最重要的一篇了,这篇能吃透的话,基本安卓app层玩的机制都能理解的很清楚了。所以我也倾注了全部的心血来写这篇,希望跟大家一起分享。” 

简单先说下:这里将第十章(Android的消息机制)、第九章(四大组件的工作过程)放在第八章(理解Window和WindowManager)前面的原因是:学习理解Window的知识最好需要先了解Activity的运行机制以及handler的工作原理,所以大家读主席这本书的时候也建议按照这个顺序来读这三章,对window的理解会更水到渠成,以上。如果看这篇前你还没有去看第二章的IPC机制,我强烈建议你看懂IPC再回来看这篇,会发现一切都变得非常清晰。热切期盼各位看完能有收获,有任何错误或者疑问都可在评论中给出,我会一一回复,感谢~

  1. 四大组件概述: 
    1) Activity的主要作用是展示一个界面并和用户交互,它扮演的是一种前台界面的角色。 
    2) Service是一种计算型组件,用于在后台执行一系列计算任务,但因为其本身还是运行在主线程中的,因此耗时的后台计算仍然需要在单独的线程中去完成。 
    3) BroadcastReceiver是一种消息型组件,用于在不同的组件乃至不同的应用之间传递消息。广播注册有两种方式,动态注册通过Context.registerReceiver()来实现,必须要应用启动才能注册;静态注册则在AndroidManifest文件中进行,应用安装时会被系统解析,不需要启动应用就可接收广播。 
    4) ContentProvider是一种共享型组件,用于向其他组件乃至其他应用共享数据。
  2. 下面我用UML图的形式来说明四大组件的工作过程:
  3. Activity的工作过程 Android开发艺术探索读书笔记(三) Android开发艺术探索读书笔记(三)    Android开发艺术探索读书笔记(三)  可以和下面这幅图对比一下看看。Android开发艺术探索读书笔记(三)
  4. Service 
    启动: 
    Android开发艺术探索读书笔记(三)Android开发艺术探索读书笔记(三)
    绑定: 
    Android开发艺术探索读书笔记(三)Android开发艺术探索读书笔记(三)
  5. BroadcastReceiver 
    注册(动态): 
    Android开发艺术探索读书笔记(三) 
    发送和接收: 
    Android开发艺术探索读书笔记(三)
  6. ContentProvider 
    1) 当ContentProvider所在的进程启动的时候,它会同时被启动并被发布到AMS中,这个时候它的onCreate要先去Application的onCreate执行。 
    2) 启动方式请看page363,这里就不画了,书上画的非常清晰易懂,就写几个tips 吧。 
    a. 应用启动的入口为ActivityThread的main方法,main方法会创建ActivityThread实例并创建主线程消息队列。 
    b. attach方法中远程调用AMS的attachApplication方法,并提供ApplicationThread用于和AMS的通信。 
    c. attachApplication方法会通过bindApplication方法和H来调回ActivityThread的handleBindApplication,这个方法会先创建Application,再加载ContentProvider,然后才会回调Application的onCreate方法。 
    d. ContentProvider的multiprocess属性决定了ContentProvider是否是单例(false时),一般都用单例。 
    e. ContentResolver的具体类是ApplicationContentResolver,当ContentProvider所在进程未启动时,第一次访问它会触发ContentProvider的创建以及进程启动。 
    3) query流程 
    Android开发艺术探索读书笔记(三)