`

Android自学笔记:进程和线程

阅读更多
一、进程(Processes)
        1.应用程序运行的时候,Android会为其开启一个Linux进程,其中含有一个单独的执行线程。然而你还可以将其安排进其他进程里或是在其他进程中产生额外的线程。
        2.Manifest文件控制着组件运行在哪个进程当中。<activity>、<service>、<receiver>、<provider>这四个标签都含有“process”属性,它用来指定这个组件运行在哪个进程里。
        3.process属性的功能:
        (1)组件运行在各自的进程中。
        (2)一些组件共享着一个进程。
        (3)不同应用程序中的组件运行在相同的进程中(它们共享同一个Linux用户ID和权限)。
        (4)另外<application>标签也有个process属性,默认时:在指定进程中应用所有组件。
        4.所有的组件是在指定进程中的主线程创建,也就是说当系统调用这些组件时,会去那个线程里面寻找。由于所有方法调用都在那主个线程中,难免会出现阻塞的情况(复杂的循环计算),所以开发人员可以创建额外的线程以避免这情况的发生。
        5.有两种情况,Android需要强制关闭一个进程:
        (1)内存不足。
        (2)其他的进程需要更多的内存以响应用户需求。
        6.强制关闭进程的简单原理:Android会衡量哪些进程对当前用户比较重要,以关闭那些不重要的进程。举例来说,Android更乐意关闭掉那些不在屏幕上显示的进程。因此,得出一个结论就是,这一行为取决于组件在那个进程中的状态。

二、线程(Threads)
        1.用户界面应当是迅速地响应用户操作为目的,对于那些不能迅速完成的操作放进其它线程里面去工作。比如说下载功能,可以放置到后台去嘛。
        2.当然,还是利用JDK中的Thread对象去创建线程,而且Android已然提供为开发人员提供好了极为便利的API用以管理线程。

三、远程方法调用(Remote procedure calls)
        1.Android提供了一个轻量级的机制——远程方法调用(RPCs),即:在本地方调用方法,却在远程方(其它的进程)执行它,并且将结果返回给本地。
        2.调用原理:首先在本地方将这个方法调用和其携带的数据分解出来,然后从本地方进程和地址空间传输到远程方进程和地址空间;远程方会重新组装和制定方法调用;返回值则是由远程方传输回到本地方。
        3.RPC接口里面的方法都是同步的,也就是说,只有远程方法执行完毕之后(如果方法没有返回值亦如此),本地调用的方法才会结束。

四、线程安全的方法(Thread-safe methods)
        1.当某个方法有可能同时在不同线程中被调用,那么开发人员就需要让这个方法改成线程安全的(比如RPCs)。
        2.Content provider会接收来自不同进程产生的数据请求。详细点说就是这么回事,尽管ContentResolver和ContentProvider这两个类隐藏了关于内部线程通信是如何被管理的信息,但是ContentProvider中的那些方法(也就是响应那些数据请求的方法):query()、insert()、delete()、update()和getType(),这些方法都是在context provider所处进程的线程池中被调用的,而不是在主进程中。换句话说,它们有可能在同一时刻不同线程中调用这些方法,所以它们必须要在线程安全的情况下执行。



分享到:
评论

相关推荐

    Android学习笔记--Binder

    【Android学习笔记--Binder】 Binder是Android系统中的核心组件,它是Android系统实现进程间通信(IPC,Inter-Process Communication)的主要方式。Binder机制允许不同进程的组件之间进行数据交换和功能调用,就像...

    Android学习新手笔记

    整个笔记强调了在Android学习过程中,Java编程知识的重要性,并提供了大量代码实例来帮助新手理解Android开发的核心概念和常用组件的使用方法。这份笔记可以作为学习Android开发的入门教材,它覆盖了从基础到实战...

    Android自学笔记

    【Android自学笔记】 Android 应用开发是移动设备软件开发的重要领域,主要针对谷歌的Android操作系统。本笔记将概述Android应用开发的基础知识,包括环境搭建、应用构成、apk解析、Activity管理和生命周期等。 ...

    java、linux、Android 学习笔记

    【Android学习笔记】 Android是一个开源的移动操作系统,主要应用于智能手机和平板电脑。它由Google主导并开源,基于Linux内核。学习Android开发,你需要熟悉Java或Kotlin语言,理解Android SDK、Android Studio...

    Android群英传笔记

    《Android群英传笔记》是一份详尽的关于Android开发的学习资料,涵盖了Android开发的核心概念、关键技术和实战应用。这份笔记旨在帮助开发者深入理解Android系统的工作原理,掌握开发技巧,并能应用于实际项目中。 ...

    Android ROM定制学习笔记

    Android 的基本概念包括 Android 的架构、Android 的组件、Android 的进程和线程等。Android 的版本信息包括 Android 的主分支和 Android 的分支。 在安装和配置 Android 开发环境时,需要安装 JDK、Eclipse IDE、...

    android详细笔记

    Android是谷歌公司开发的一款开源移动操作系统,广泛应用于智能手机、平板电脑和智能电视等设备。这份“Android详细笔记”涵盖了从基础到...通过深入学习和实践,你可以构建出高效、稳定且用户体验良好的Android应用。

    Android学习入门笔记.zip

    Android学习入门笔记主要涵盖了一系列关于Android开发的基础知识,旨在帮助初学者快速掌握这一全球最流行的移动操作系统之一的编程技能。以下是一些核心知识点的详细解释: 1. **Android概述**: - Android是由...

    android学习笔记

    ### Android学习笔记知识点详解 #### 一、Android简介与历史 - **定义**: Android是由Google公司主导开发的一款基于Linux内核的操作系统,主要用于移动设备,如智能手机和平板电脑。 - **发展历史**: Android项目...

    Android 学习笔记

    【Android 学习笔记】 Android 是一款开源的操作系统,主要用于移动设备,如智能手机和平板电脑。它是Google主导的开放手机联盟开发的,以其开放性和可定制性吸引了大量的开发者和用户。学习Android开发对于想要...

    学习笔记:学习笔记

    如进程与线程的概念、内存管理、磁盘I/O、权限控制等,这些都是系统管理员和开发者必备的知识。 3. 数据库:数据是信息化社会的血液,学习笔记可能会涉及SQL语言、关系型数据库(如MySQL、Oracle)和非关系型数据库...

    android开发板笔记(0资源分)1

    "新版Android开发教程&笔记--基础入门一.pdf"和"新版Android开发教程&笔记--基础入门二.pdf"则是深入学习Android开发的核心资料。这些教程可能涵盖了从Android系统架构到基本的编程概念,例如Activity生命周期、...

    Android 开发实战经典课件笔记与课件Demo代码

    这份资料集包含了详细的课件笔记和配套的Demo代码,旨在帮助学习者深入理解Android开发的核心概念和技术。 一、Android笔记部分 这部分内容可能涵盖了以下几个关键知识点: 1. **环境搭建**:讲解如何安装Android ...

    android 学习心得

    ### 十一、Android Activity和Intent机制学习笔记 - **Intent**:用于在Activity之间传递信息的意图对象,可以启动新的Activity、服务等。 - **显式Intent**:直接指定了要启动的目标组件。 - **隐式Intent**:通过...

    Android笔记

    9. **异步处理**:理解Android主线程和工作线程的区别,学习如何使用AsyncTask、Handler、Thread或最近的Coroutines来处理耗时操作,避免阻塞UI线程。 10. **权限管理**:Android 6.0及以上版本引入了运行时权限...

    AIDL跨进程调用学习笔记

    本学习笔记将深入探讨AIDL的基本概念、使用方法及其在实际开发中的应用。 首先,我们需要理解AIDL的定义:它是Android提供的一种接口定义语言,允许我们定义服务(Service)如何公开其接口给其他应用程序组件,即使...

    android学习笔记2--BroadcastReceiver

    总之,BroadcastReceiver是Android系统中一种强大的通信工具,它可以监听并响应各种系统和应用事件,从而实现组件间的交互。正确理解和使用BroadcastReceiver能够提升应用的功能性和用户体验。在设计和编写...

Global site tag (gtag.js) - Google Analytics