(转)从进程-线程的角度,理解Activity,Service,Broadcast

写下来仅记录下困惑了很久的问题...

先说下我以前的错误理解:

Service和Broadcast这两个东西,我一直认为这个能够脱离Activity的进程。

因为这两个东西的外部表现就是你离开利当前的进程(直观表现就是你离开当前应用),这两个东西仍然存在在Android的内存中。

我就想当然的认为既然程序都退出了,Service和Broadcast还没有结束,那么这连个东西肯定是依附在系统进程上。

正确的理解是:

Activity,Service,Broadcast这3个东西不仅在同一个进程中,并且还在同一个线程中。

如果有怀疑的话,可以开一个带有Servie的程序,然后用任务管理器杀死这个Service所在的进程,那么你会发现这个Service在相应的被杀死了.

错误的理解归结一下就是看问题的角度有问题。

以前认为是自己的应用程序去控制Android,其实不然应该这样理解:你的整个应用程序的生命周期都是Android在帮助你控制。

Activity是Android帮我们创造的,Service和Broadcast也是Android帮我们创造的。

所以当你离开应用程序的时候,你会认为这个程序所在的进程已经被你杀死了(都是被Windows毒害的)。

其实你这个就涉及到Android中Activity的几种状态:

你能够看见的Activity是激活状态,

你看不见的Activity是暂停状态(简单这么认为吧,其实还有别的状态)。

最后总结一下:

不要用应用程序的角度去理解Android,要用Android的角度去看待应用程序。

不要在Broadcast和Service运行时间较长的任务,容易卡死程序。如果想运行长时间的任务可以再开启一个线程运行。不要盲目的认为在Service中运行下载任务就卡不死你的程序了。

====================================

一开始的时候我还好奇。。为什么service里面可以直接更新UI。。。成功。。这个解释了一切

相关推荐