打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Android之Processes and Threads

Processes and Threads

  当一个应用程序组件开始,应用程序没有任何组件在运行,Android系统开启一个新Linux进程为应用程序伴随一个单独的执行线程。默认,所有同一个进程所有组件运行在同一个进程 和线程(称为主线程)。如果一个应用程序组件开启并且已经有一个那个应用中程序的进程(因为另一个这个应用程序的组件存在),那么组件使用同一个线程。可是,你可以安排不同的组件在你的应用程序里运行在不同的进程,并且你可以为任何进程创建线程。

Processes

  默认,同一应用程序的所有组件运行在同一个进程,大多数应用不应当改变这点。可是,如果你发现你需要控制哪一个组件属于哪一个进程,你可以在manifest文件里做。

  每种类型的manifest入口点<activity>、<service>、<receiver>、<provider>--支持一个android:process属性能指定运行进程。你可以调这个属性以便每个组件运行在它自己的进程 或一组组件共享同一个进程而其它的不是。你也可以设置android:process以便不同应用程序的组件运行在同一个进程--前提是两个应用程序共享同一个Linux UID并且使用同样的证书签名。

  <application>元素也支持 android:process属性,来设置适用所有组件的默认值。

  Android可能会在某个点关闭进程 ,当内存少。应用程序组件运行在被杀死的进程里被最终销毁。一个进程被再开启这些组件,当又有工作要他们来做。

  当决定哪个进程被杀死,Android系统衡量。例如,关闭一个拥有不再可见的activity的进程比较容易接受,和拥有可见activity的进程相比。是否删除进程决定于运行于其内的组件。

Process lifecycle

  Android系统尝试尽量维护应用程序进程,但最终需要移除老的进程来为新的和更重要的进程分配内存。

  在重要级别图中共有五个等级。下面按重要程序展现不同类型的进程(第一个进程最重要)

  1、Foreground process

  2、Visible process

  3、Service process

  4、Background process

  5、Empty process

Threads

  当一个应用程序启动,系统创建一个线程执行应用程序,叫做“主线程”。这个线程非常重要,因为它管理事件分发给合适的用户接口widget,包括绘图事件。它也是你的应用程序同Anroid UI 工具包组件交互的线程(从android.widget和android.view包中的组件)。这样,主线程也叫做UI线程。

  系统不创建单独的线程为每个组件。所有组件在同一个进程的组件都是UI线程的实例,系统调用各个组件都是从这个线程分发。结果是,响应系统调用的方法(如onKeyDown()等)都运行在UI线程里。

  Android UI 工具包不是线程安全的,你必须操作你的UI在UI线程。有两条简的规则对Android线程模型:

  1、不要阻塞UI线程

  2、不要在UI线程外操作Android UI工具。

Worker threads

  如果你有非即时的操作,你应该让他们在单独的线程工作(背景线程或工作线程)。

  下面是单击按钮,响应下载事件的事例:

  

  上例违反了第二条规则,在非UI线程中操作UI。

Using AsyncTask

  ……(此处省略250字)

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Android中进程与进程、线程与线程之间如何通信?
Processes and Threads
Android 进程和线程详解
《老罗的Android之旅》导读PPT
Android 进程和线程
安卓程序与服务器端交互总结
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服