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