浅谈Service
2018-02-28 20:30
127 查看
start方式启动服务:
生命周期:onCreate()-->onStartCommand()-->onDestory()
特点:开启服务后服务与开启者无关,开启者不可以调用服务的方法
bind方式启动服务:
生命周期:onCreate()--》onBind()--》onUnBind()--》onDestory()
特点:开启服务后,服务与开启者同生共死 ,而且开启者还可以调用服务里的方法
无论通过那种方式启动 Service(start、bind、start & bind),任何组件(甚至其他应用的组件)都可以使用 Service。并通过 Intent 传递参数。当然,你也可以将 Service 在
将
还有一种有意思的方式就是IntentService。
IntentService继承service。
使用 IntentService 的要点如下:
默认在子线程中处理回传到
在重写的
当所有请求处理完成后,自动停止 Service,无需手动调用
默认实现了
默认实现了
生命周期:onCreate()-->onStartCommand()-->onDestory()
特点:开启服务后服务与开启者无关,开启者不可以调用服务的方法
bind方式启动服务:
生命周期:onCreate()--》onBind()--》onUnBind()--》onDestory()
特点:开启服务后,服务与开启者同生共死 ,而且开启者还可以调用服务里的方法
无论通过那种方式启动 Service(start、bind、start & bind),任何组件(甚至其他应用的组件)都可以使用 Service。并通过 Intent 传递参数。当然,你也可以将 Service 在
AndroidMenifest.xml文件中配置成私有的,不允许其他应用访问。
将
android:exported属性设为 false,表示不允许其他应用程序启动本应用的组件,即便是显式 Intent 也不行(even when using an explicit intent)。
Service 的 onCreate() 可以执行耗时操作吗?
不可以 ,因为四大组件是运行在主线程的。所以不能进行耗时操作。那么在Service中如何执行耗时操作?
第一想法肯定是new Thread(),还可以使用AysncTask或
HandlerThread来替代 Thread 创建线程。
还有一种有意思的方式就是IntentService。
IntentService继承service。
IntentService继承于
Service,若 Service 不需要同时处理多个请求,那么使用
IntentService将是最好选择。你只需要重写
onHandleIntent()方法,该方法接收一个回调的 Intent 参数,你可以在方法内进行耗时操作,因为它默认开启了一个子线程,操作执行完成后也无需手动调用
stopSelf()方法,
onHandleIntent()将会自动调用该方法。
使用 IntentService 的要点如下:
默认在子线程中处理回传到
onStartCommand()方法中的 Intent;
在重写的
onHandleIntent()方法中处理按时间排序的 Intent 队列,所以不用担心多线程(multi-threading)带来的问题。
当所有请求处理完成后,自动停止 Service,无需手动调用
stopSelf()方法;
默认实现了
onBind()方法,并返回 null;
默认实现了
onStartCommand()方法,并将回传的 Intent 以序列的形式发送给
onHandleIntent(),您只需重写该方法并处理 Intent 即可。
相关文章推荐
- 浅谈IntentService
- 浅谈对Jquery+JSON+WebService的使用小结
- 浅谈Service Manager成为Android进程间通信(IPC)机制Binder守护进程之路
- 浅谈Service Manager成为Android进程间通信(IPC)机制Binder守护进程之路
- 浅谈Service Manager成为Android进程间通信(IPC)机制Binder守护进程之路
- 浅谈Android Service与IntentService的区别
- 浅谈Android内存泄漏&&实现杀不死的无界面后台Service
- 浅谈android add_service PERMISSION DENIED问题
- 从APP升级更新浅谈安卓Service知识
- 浅谈J2EE中的Service(一)
- 简单的MVC就够了吗?浅谈service Layer的引入
- 安卓开发_浅谈Service
- 浅谈Service Manager成为Android进程间通信(IPC)机制Binder守护进程之路
- Android开发之service浅谈
- 浅谈 Saas[software as a service] 【软件即服务】
- android 浅谈service
- 浅谈J2EE中的Service(二)
- 浅谈Service Manager成为Android进程间通信(IPC)机制Binder守护进程之路
- Android开发之浅谈Service的基本概况和常见问题