Chinaunix首页 | 论坛 | 博客
  • 博客访问: 395301
  • 博文数量: 119
  • 博客积分: 1796
  • 博客等级: 上尉
  • 技术积分: 890
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-14 10:16
个人简介

守正

文章分类
文章存档

2013年(1)

2011年(40)

2010年(78)

分类: 嵌入式

2010-05-14 11:10:55

一、可以确定的一些知识点
1、一个 Android 程序开始运行时,会单独启动一个Process。
   默认情况下,所有这个程序中的Activity或者Service都会跑在这个Process。
   默认情况下,一个Android程序也只有一个Process,但一个Process下却可以有许多个Thread。
2、一个 Android 程序开始运行时,就有一个主线程Main Thread被创建。该线程主要负责UI界面的显示、更新和控件交互,所以又叫UI Thread。
   一个Android程序创建之初,一个Process呈现的是单线程模型--即Main Thread,所有的任务都在一个线程中运行。所以,Main Thread所调用的每一个函数,其耗时应该越短越好。而对于比较费时的工作,应该设法交给子线程去做,以避免阻塞主线程(主线程被阻塞,会导致程序假死现象)。

3、Android单线程模型:Android UI操作并不是线程安全的并且这些操作必须在UI线程中执行。如果在子线程中直接修改UI,会导致异常。


【待解疑问】
1、(Service和 Activity只是Android提供的Components中的两种,除此之外还有Content Provider和Broadcast Receiver)


2、一个Activity就运行在一个线程中吗?或者编码时,如果不是明确安排在不同线程中的两个Activity,其就都是在同一个线程中?那从一个Activity跳转到另一个Activity时,是不是跳出的那个Activity就处在睡眠状态了?
【答】参考资料3和4中给出了相应的答案。
     参考资料3中指出:每个Activity都有一个Process属性,可以指定该Activity是属于哪个进程的。当然如果不明确指明,应该就是从属于默认进程(Application指定的,如其未指定,应该就是默认主进程)。
     参考资料5中则指出,Android中有Task的概念,而同一个Task的各个Activity会形成一个栈,只有站定的Activity才有机会与用户交互。

    至于主线程如何创建子线程,主线程如何和子线程通信,以及task、进程、各种components(组件)之间的关系,在后续笔记中一一研究。









【参考资料】
1、Android,UI主线程与子线程:http://jinguo.javaeye.com/blog/660073
2、Android单线程模型相关概念详解:http://developer.51cto.com/art/201001/181378.htm
3、Android进程与线程:http://www.cnblogs.com/feisky/archive/2010/01/01/1637409.html
4、深入Android【五】——任务和进程:
阅读(2381) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~