进程和线程

进程

默认情况下,同一个APP的所有组件应该运行在同一个进程下。然而,如果我们有特殊需求的话可以在manifest文件中修改组件运行的进程。

  • manifest为四大组件都提供了android:process属性,这个属性指定了某个组件应该在哪个进程上运行。通过设置这个属性我们可以让所有进程运行在同一个进程中或者某些组件在一个进程而其他的在另外一个进程。也可以让不同APP运行在同一个进程中。
  • manifest文件的application节点也提供了android:process属性,此时设置的是这个APP的所有组件运行的进程。
  • Android会在某些特殊情况下杀死进程,譬如说内存不足的情况下其他直接服务于用户的进程请求内存时。进程被杀死时进程中所有运行的组件也被销毁。当用户再次回到这些组件时会重新启动一个进程。

线程

当一个APP启动时,系统会为APP创建一个执行线程(称为主线程)。这个线程被用来为UI分发事件,包括绘制事件。因此主线程也叫做UI线程。然而,在某些特殊情况下,主线程可能不是UI线程。
系统不会为每一个组件都创建一个单独的线程。所有运行在同一个进程中的组件都在UI线程中实例化,所有的UI操作都在主线程中进行。所以在主线程中不能执行类似网络请求和数据库操作等长时间的操作,否则系统会卡住并且如果卡住超过5秒便会弹出ANR对话框。
因此有两条十分重要的原则:

  • 永远不要阻塞UI线程。
  • 必须在UI线程中操作View。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 进程和线程 当一个应用程序组件启动和应用程序没有任何其他组件在运行时,Android系统开始一个新...
    ProZoom阅读 501评论 0 1
  • 转自:https://developer.android.com/guide/components/process...
    画峰阅读 221评论 0 0
  • 前言:本文所写的是博主的个人见解,如有错误或者不恰当之处,欢迎私信博主,加以改正!原文链接,demo链接 当某个应...
    PassersHowe阅读 557评论 0 1
  • 作者简介 原创微信公众号郭霖 WeChat ID: guolin_blog 本篇来自Gpwner的投稿,介绍了An...
    木木00阅读 466评论 0 2
  • 每天挤着毫无缝隙的公车去到地铁然后走一段路到公司上班,一天天重复着这样的生活,虽然很累,但是谁的生活不累呢?总是这...
    艾莉缇阅读 225评论 0 0