线程与进程

2017-09-27  本文已影响3人  zhi5ai

每个应用都是一个进程。(不太严谨,大概大概)

进程通信:

四大组件:Activity,Service,Content Provider,Broadcast Receiver

Activity

使用intent,start一个Activity,而这个Activity可能在另一个进程中。这个时候,再用上startActivityForResult 和 onActivityResult。就完成了当前进程和另一个进程的通信。

Service

一般service也就是本地Service。相应的还有远程Service,(remote service)。

本地Service和应用同在一个进程里,并且是主线程的?

远程Service则运行在一个独立的进程中。

AIDL , Android Interface Definition Language。跨进程,进程A得知进程B的接口(即方法),才可以调用,传递参数,获取返回值。

Content Provider

当需要对外提供数据,其它应用都可以获取到。而Content Provider也是对Sqlite的另一种封装而已,同时,它提供了另一种访问数据的方式。

在不同应用中共享数据,即完成进程通信。

Broadcast Receiver

应用A发送一个广播,其它应用在注册监听这个广播之后,就可以接受到这个广播。

Bound Service

从创建 Bound Service 开始。一般咱们使用 bindService 来获取一个 iBinder 对象,然后通过 iBinder 对象来与 Service 进行通信。

Binder

在Service里的onBind()方法中,返回一个Binder对象,在其他组件中通过bindService()来获取这个Binder对象,就可以和Service进行交互了。

这个不算跨进程。


进程中可以有多个线程。

应用中的多线程操作:

1. Handler机制

2. AsycTask-即对Handler,MessageQueue, Message, Looper的封装。更便已使用。

3. RxJava-响应式编程。利用观察者模式,完成多线程通信问题。Scheduler相当简洁的解决了线程切换的问题。

上一篇下一篇

猜你喜欢

热点阅读