Android 进程和线程

来源:互联网 发布:特朗普 中美关系 知乎 编辑:程序博客网 时间:2024/05/17 05:10
  • 关于Android进程的认识

      当一个程序第一次启动的时候,Android会启动一个LINUX进程和一个主线程。默认的情况下,所有该程序的组件都将在该进程和线程中运行。 同时,Android会为每个应用程序分配一个单独的LINUX用户。Android会尽量保留一个正在运行进程,只在内存资源出现不足时,Android会尝试停止一些进程从而释放足够的资源给其他新的进程使用, 也能保证用户正在访问的当前进程有足够的资源去及时地响应用户的事件。

      我们可以将一些组件运行在其他进程中,并且可以为任意的进程添加线程。 Android中的所有组件都在指定的进程中的主线程中实例化的,对组件的系统调用也是由主线程发出的。每个实例不会建立新的线程。

Android会根据进程中运行的组件的状态来判断其重要性。Android会首先关闭那些不重要的进程。

Android主要分为以下进程:

  • 前台进程

    前台进程是指单签用户正在使用的进程。一般来说,当内存低到连前太进程都不能运行的时候,系统会进程内存调度,中止一些前台进程来响应用户交互请求。

  • 可见进程

可见进程不包含前台的组件但是会在屏幕上显示一个可见的进程是的重要程度很高,除非前台进程需要获取它的资源,不然不会被中止。

  如果有如下的一种情形就是可见进程:

  这个进程中含有一个不位于前台的Activity,但是仍然对用户是可见的(这个Activity的onPause()方法被调用),这是很可能发生的,例如,如果前台Activity是一个对话框的话,就会允许在它后面看到前一个Activity。

  这个进程里有一个绑定到一个可见的Activity的Service。

  • 服务进程

运行着一个通过startService() 方法启动的service,这个service不属于上面提到的2种更高重要性的。service所在的进程虽然对用户不是直接可见的,但是他们执行了用户非常关注的任务(比如播放mp3,从网络下载数据)。只要前台进程和可见进程有足够的内存,系统不会回收他们。

0 0