`
android_mylove
  • 浏览: 399774 次
社区版块
存档分类
最新评论

Android学习笔记(6)————Android的线程与进程

 
阅读更多

/********************************************************************************************
* author:conowen@大钟
* E-mail:conowen@hotmail.com
* http://blog.csdn.net/conowen
* 注:本文为原创,仅作为学习交流使用,转载请标明作者及出处。
********************************************************************************************/

1、Android系统的进程(Processes)与线程(Thread):

1.1、进程与线程简述

当一个Android应用程序启动时,系统会启动一个Linux进程,并在此进程中,开启一个称为“main”的线程,也就是常说的主线程。主线程主管向用户界面控件派发事件。其中包含绘图事件。它也是你的应用与界面工具包(android.widget和android.view包中的组件)交互的地方,于是main线程也被称为(UI)界面线程,所以整个线程一般不能阻塞。

一般情况下,应用程序的组件都运行在这个Linux进程里面,但是也可以安排到其他进程里面运行。只要修改AndroidManifest文件,就可以安排应用程序组件运行在哪个进程里面了。


组件元素有如下几种:

<activity>、<service>、 <receiver>与<provider>

它们都有一个process属性的,可以设定为相对应的进程里面。

另外<application>也有一个process属性,可以设定这个application里面的所有组件运行在哪个进程里面。

默认情况下,这些组件都是在主线程里面的,Android系统不会为每一个组件创建一个线程。

总的来说,一般的application都是运行在同一个进程里面,而且所有的组件都在主线程里面。


1.2、Android系统自动关闭进程机制

但是有时候开始一些比较费时的程序。也就是说某些组件被系统调用了,但是长时间没有响应(超过5秒),导致主线程阻塞,后续组件不能执行。Android系统就会自动地把整个进程都给杀掉了。因此,我们需要在进程里面新开线程,让一些比较费时的组件运行在其他线程里面。这样就可以让主线程畅通,而不至于让Android系统关闭掉应用程序的进程。(没有自动关闭线程之说)


除此之外,Android系统也会自动地关闭一些其他的进程,在以下情况下进程可能会被关闭。

系统可用内存不足,同时又有一个正在为用户进行服务的进程需要更多内存的时候,Android可能会关闭一个进程。同时地,这个进程中运行着的应用程序也因此被杀掉了。当系统再次需要它们进行处理时,Android系统会为这些组件重新创建进程。至于Android会自动关闭哪个进程,就要看Android系统的定义了。


2、进程与线程的区别


(1)线程是进程内的一个执行单元,进程至少有一个线程。
(2)同一个进程内,线程共享进程的地址空间,而进程有自己独立的地址空间。
(3)线程是处理器调度的基本单位,但进程不是。

(4)二者均可并发执行。


3、Android中线程的管理请参看下一篇博文

Android学习笔记(7)————Android中的消息机制


分享到:
评论

相关推荐

    Android学习笔记(十)——实现新闻列表

    Android学习笔记(一)——创建第一个Android项目 Android学习笔记(二)android studio基本控件及布局(实现图片查看器) Android学习笔记(三)android studio中CheckBox自定义样式(更换复选框左侧的勾选图像) ...

    Android学习笔记之——Content Providers

    之前博文《 Android学习笔记之——Android Studio的安装(3.6版本)、Java的基本语法及Android的概述 》曾经介绍过android有四大组件。本博文学习一下Content Providers(内容提供器) 目录 Android运行时 ...

    Android Training学习笔记——Navigation 参考源码

    Android Training系列是Google提供的一系列教程,旨在帮助开发者提升技能,而"Android Training学习笔记——Navigation 参考源码"则是对这一主题的深入探讨。 首先,Navigation组件的核心概念是Navigation Graph,...

    Android开发者学习笔记——View、Canvas、bitmap

    Android开发者学习笔记——View、Canvas、bitmap Android 开发者学习笔记——View、Canvas、bitmap 是 Android 开发中常用的类,本文将通过实例讲解 View、Canvas 等相关知识点。 从资源中获取位图 在 Android ...

    JAVA学习笔记————————

    7. **多线程**:JAVA提供了丰富的多线程支持,学习笔记会讲解线程的创建、同步、互斥以及线程池的使用。 8. **反射机制**:JAVA反射机制允许在运行时动态地获取类的信息并操作类的对象,这对于插件开发、动态代理等...

    Android Training学习笔记——Navigation 参考源码(ListView版)

    这篇“Android Training学习笔记——Navigation 参考源码(ListView版)”深入探讨了如何使用Navigation构建一个基于ListView的导航系统。我们将从以下几个方面来详细讨论这个主题: 1. **Navigation组件简介** ...

    Python 笔记源码——内含python后端&机器学习等.zip

    Python 笔记源码——内含python后端&机器学习等.zip Python 笔记源码——内含python后端&机器学习等.zip Python 笔记源码——内含python后端&机器学习等.zip Python 笔记源码——内含python后端&机器学习等.zip ...

    Android Training学习笔记——RecyclerView和CardView

    这篇“Android Training学习笔记”主要围绕这两个组件展开,旨在帮助开发者提升他们的Android应用设计能力。 RecyclerView是Android SDK提供的一种列表视图控件,取代了早期的ListView。RecyclerView的优势在于它的...

    Android 学习笔记——利用JNI技术在Android中调用、调试C++代码

    这篇“Android学习笔记——利用JNI技术在Android中调用、调试C++代码”将带你深入理解如何在Android应用中使用JNI来调用C++代码,以及如何进行调试。以下是对这一主题的详细阐述。 1. **JNI简介** JNI是Java平台的...

    Android学习笔记——Http通信 源码

    这篇"Android学习笔记——Http通信 源码"主要探讨了如何在Android应用中利用WebView控件加载网页以及使用ImageView控件加载网络图片,这两部分是Android应用与互联网交互的常见场景。 首先,我们来深入理解一下`...

    Android学习笔记——获取网络图片并显示

    在Android开发中,获取网络图片并显示是一项基本但至关重要的任务。这通常涉及到网络请求、图片处理和UI组件的交互。下面将详细讲解这个过程,包括XML布局、Java代码实现以及必要的权限设置。 首先,我们需要在XML...

    第一行代码 android学习笔记 完整版

    "Android学习笔记" Android学习笔记是Android开发者的必读书籍,书中涵盖了Android系统架构、Activity、Intent、资源管理等多方面的知识。本笔记对应的学习资源《第一行代码》是Android开发者的入门必读书籍,书中...

    【安卓项目】——新闻资讯类项目

    Android学习笔记(一)——创建第一个Android项目 Android学习笔记(二)android studio基本控件及布局(实现图片查看器) Android学习笔记(三)android studio中CheckBox自定义样式(更换复选框左侧的勾选图像) ...

    Android学习笔记——Canvas & clipRect

    这篇学习笔记将深入探讨这两个概念及其在实际应用中的使用。 首先,Canvas可以理解为画布,它是Android系统提供的用于在屏幕上绘制图形的对象。在Android中,我们可以通过Canvas来绘制各种形状,如线条、矩形、圆、...

    Android Training学习笔记——App Bar 参考源码

    这篇文章是基于“Android Training”系列的学习笔记,主要探讨了App Bar的设计原理和参考源码分析。下面将详细阐述App Bar的相关知识点。 首先,App Bar是Android设计指南中推荐的用户界面元素,它位于屏幕顶部,...

    狂神Java学习笔记————前端入门——html、css、JavaScript学习代码

    笔记内容不仅与视频教程紧密同步,还融入了个人的理解和一些额外的扩展知识点,旨在帮助学习者更好地掌握前端开发的基本技能。 HTML(HyperText Markup Language)是网页制作的基础,它是用来构建网页结构的标记...

Global site tag (gtag.js) - Google Analytics