美文网首页
线程与进程

线程与进程

作者: zhi5ai | 来源:发表于2017-09-27 15:33 被阅读3次

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

    进程通信:

    四大组件: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相当简洁的解决了线程切换的问题。

    相关文章

      网友评论

          本文标题:线程与进程

          本文链接:https://www.haomeiwen.com/subject/gkeuextx.html