Android进程和线程详解

Android默认所有组件在同一进程中运行,可通过manifest设置组件在独立进程中运行。主线程负责UI交互,长时间操作应在工作线程中进行。AsyncTask简化了在后台线程执行任务和更新UI的流程。线程安全对于多线程调用的方法至关重要,如Service的IBinder和ContentProvider的方法。
摘要由CSDN通过智能技术生成

当应用程序组件启动,且应用程序没有其他组件运行时,Android系统为这个应用程序启动一个新的Linux进程,并开始运行一个主线程。默认情况下,同一应用程序的所有组件都在同一进程的主线程中运行。如果应用程序组件启动,并且已经存在该应用程序的进程(因为应用程序中的其它组件已经启动),则组件将在该进程中启动,并使用相同的主线程。但是,您可以通过设置让应用程序中的不同组件分别在不同的进程中运行,并且可以为任何进程创建其它线程。本文档讨论了进程和线程是如何在Android应用程序中工作的。

Processes

默认情况下,同一应用程序的所有组件都运行在同一进程中,大多数应用程序不需要改变此设置。但是,如果您需要设置某个组件到特定进程,则可以在manifest文件中来实现。

每种组件元素(activity、service、receiver和 provider)都支持android:process属性,用于指定该组件运行在哪个进程中。您可以设置此属性,使每个组件在自己的进程中运行,或者某些组件共享进程,而其他组件不共享进程。您还可以设置android:process,以便不同应用程序的组件在同一进程中运行,前提是应用程序共享相同的Linuxuser ID,并使用相同的证书进行签名。元素也支持android:process属性,用于设置适用于所有组件的默认值。

当内存不足时,Android系统可能会在某个时刻kill进程,以保证其他更直接为用户服务的进程能正常运行。在被kill的进程中运行的应用程序组件因此被销毁。当组件再次工作时,将再次启动新的进程。

Android系统会权衡进程相对于用户的重要性来决定要杀死哪些进程。例如,与屏幕上可见Activity的进程相比,它更容易关闭

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值