天天看点

基础篇(十三) Activity,Service,子线程 通信

Activity中直接创建Thread,Android系统在内存不足时,会将一些Activity销毁,这样Thread就会失去管理对象,使程序发生意想不到的结果。 Service默默地运行在后台,生命周期可控,更合适管理Thread。形成Activity-->Service-->Thread三层结构。Activity将需要的任务告诉Service层,Service层创建Thread去完成任务。Thread将任务的进度、状态、错误信息反馈给Service,Service将这些消息反馈给相关的Activity,并且还可以利用Notification更新通知栏消息。

一、Activity<-->Service通信 1. Activity调用startService (Intent)方法,将消息添加到Intent对象中,Service对象可以在调用onStartCommand (Intent)的时候得到这些消息。如             果有大量的信息要传递的话,Service端要判断一下消息是什么,才能作进一步的处理。 2. Activity调用bindService ()方法,得到Service里Binder对象的引用,这样Activity可以通过binder实现与Service的通信。    ( 参考:http://blog.csdn.net/android_bar/article/details/49300051,  http://blog.csdn.net/liuhe688/article/details/6623924)

3. Service向Activity发送消息,可以使用Broadcast,当然Activity要注册相应的 BroadcastReciever。比如Service要向多个Activity发送同样的消               息,用这种方法就很好。 ( 参考:http://blog.csdn.net/liuhe688/article/details/6641806) 4. Service向Activity发送消息,可以 使用Handler,利用Application间接把Handler传给Service。     ( 参考: http://www.cnblogs.com/tangchenglin/archive/2011/12/14/2287673.html ) 二、 Service<-->Thread通信 Service创建Thread后,如果要对 Thread进行控制(启动,暂停,停止等),Service中保留 Thread引用,就可以直接 调用Thread的方法。 Thread要向Service发送消息,通常使用Handler。 ( 参考: http://blog.csdn.net/liuhe688/article/details/6407225 )

三、 Activity<-->Thread通信 Activity创建Thread后,如果要对Thread进行控制(启动,暂停,停止等),Activity中保留Thread引用,就可以直接调用Thread的方法。

Thread要向Activity发送消息,通常使用Handler。 ( 参考: http://blog.csdn.net/liuhe688/article/details/6407225 )

继续阅读