随笔分类 -  Android之Service

摘要:一、当Acitivity和Service处于同一个Application和进程时,通过继承Binder类来实现。 当一个Activity绑定到一个Service上时,它负责维护Service实例的引用,允许你对正在运行的Service进行一些方法调用。比如你后台有一个播放背景音乐的Service,这时就可以用这种方式来进行通信。代码如下:/*************************Service代码****************************************/public class LocalService extends Service { priv... 阅读全文
posted @ 2012-05-11 11:22 精灵博客园 阅读(178) 评论(0) 推荐(0)
摘要:使用Messenger 上面的方法只能在同一个进程里才能用,如果要与另外一个进程的Service进行通信,则可以用Messenger。 其实实现IPC(Inter-Process Communication,进程间通信)的方式,还有AIDL,但推荐使用Messenger,有两点好处: 1. 使用Messenger方式比使用AIDL的方式,实现起来要简单很多 2. 使用Messenger时,所有从Activity传过来的消息都会排在一个队列里,不会同时请求Service,所以是线程安全的。如果你的程序就是要多线程去访问Service,就可以用AIDL,不然最好使用Messenger的方式... 阅读全文
posted @ 2012-05-11 11:21 精灵博客园 阅读(126) 评论(0) 推荐(0)
摘要:在编写Android应用程序时,我们一般将一些计算型的逻辑放在一个独立的进程来处理,这样主进程仍然可以流畅地响应界面事件,提高用户体验。 Android系统为我们提供了一个Service类,我们可以实现一个以Service为基类的服务子类,在里面实现自己的计算型逻辑,然后在主进程通 过startService函数来启动这个服务。在本文中,将详细分析主进程是如何通过startService函数来在新进程中启动自定义服务的。 在主进程调用startService函数时,会通过Binder进程间通信机制来通知ActivitManagerService来创建新进程,并且 启动指定的服务。在Andr.. 阅读全文
posted @ 2012-05-11 11:20 精灵博客园 阅读(187) 评论(0) 推荐(0)
摘要:Thread和Service的区别:1)Thread 是程序执行的最小单元,它是分配CPU的基本单位,可以用 Thread 来执行一些异步的操作。如果是Local Service,那么对应的 Service 是运行在主进程的 main 线程上的。如果是RemoteService,那么对应的 Service 则是运行在独立进程的main 线程上。因此 Service不是线程!2)Thread 的运行是独立于 Activity 的,也就是说当一个 Activity 被 finish 之后,如果你没有主动停止Thread或者Thread 里的run 方法没有执行完毕的话,Thread也会一直执行。因 阅读全文
posted @ 2012-05-11 11:19 精灵博客园 阅读(161) 评论(0) 推荐(0)