Service笔记(Sundy课程)

简介: Service不是一个独立的线程(进程) 启动服务后,按Home,服务还会继续运行 启动服务后,退出进程,服务不会继续运行 启动服务,不用多线程,界面会阻塞.

Service不是一个独立的线程(进程)

启动服务后,按Home,服务还会继续运行
启动服务后,退出进程,服务不会继续运行
启动服务,不用多线程,界面会阻塞.如在一个Activity中点击一个按钮,启动一项服务.该service在100秒的时间内不停地用Log进行信息的输出.
此时我们按返回键,或者多次联系按返回键,将导致ANR错误.
但是我们在服务中新开启一个线程来用Log进行信息的输出,就不会导致ANR错误.

由于startService()通常只启动,不需要返回值,所以可用来操作网络上传或者下载,操作完成后,自动停止


startService()启动服务,若在服务的public void onCreate()方法里开启一条线程做一些操作
这时候有这么一个问题:虽然我们使服务终止了,服务的onDestroy()方法也执行了,但是此线程还是在继续工作……………………

不但此问题,有时候发现service莫名其妙的阻塞.
于是android系统引入了IntentService:主要用来执行异步请求,里面也使用了Handle


另外的一个问题:
Service运行在后台,优先级较低,当内存不足的时候,系统会杀死服务.
解决办法:把service运行在前台
方法:startForeground (int id, Notification notification)

知识点:
native service(内部为C++)
当startService()和bindService都不好使的时候而且需要这个服务长期运行在后台的时候,可以调用此方法.
调用此方法需用到NDK是开发C++的插件.
但Java如何调用C++写好的类库呢???答:通过JNI(java native interface即java的原生接口)

Service和线程的选择
在当前操作要启动一个更加独立的操作的时候,可以调用线程.比我就是需要下载一个东西.


Stub是一个指针,指向了指向内存块的指针即Stub为指针的指针

相关文章
|
Kubernetes 负载均衡 网络协议
k8s教程(service篇)-总结(上)
k8s教程(service篇)-总结(上)
227 0
|
7月前
|
存储 缓存 网络协议
系统&服务管理进阶(SERVICE)
系统&服务管理进阶(SERVICE)
|
Kubernetes 监控 网络协议
k8s教程(service篇)-概念和原理(下)
k8s教程(service篇)-概念和原理(下)
226 0
k8s教程(service篇)-概念和原理(下)
|
缓存 Kubernetes 网络协议
k8s教程(service篇)-总结(下)
k8s教程(service篇)-总结(下)
270 0
|
Kubernetes 负载均衡 Linux
k8s教程(service篇)-概念和原理(上)
k8s教程(service篇)-概念和原理(上)
203 0
|
Kubernetes 负载均衡 前端开发
【K8S系列】第十二讲:Service进阶
【K8S系列】第十二讲:Service进阶
89 0
|
Kubernetes 负载均衡 网络协议
【K8S系列】第三讲:Service基础入门
【K8S系列】第三讲:Service基础入门
54 0
|
Kubernetes 网络协议 数据库
【k8s 系列】k8s 学习十三,Service 基础
今天开始来分享Service 的基础知识,后续我们可以慢慢打磨,分享 Service 的进阶知识和原理
117 0
|
API 开发工具 Android开发
Service进阶
上节我们学习了Service的生命周期,以及两种启动Service的两种方法,本节继续来深入了解Service中的IntentService,Service的使用实例:前台服务与轮询的实现!
|
算法 调度 Android开发
Service初涉
本节开始我们继续来学习Android中的第二个组件:Service(服务),开始本节内容! 1.线程的相关概念 在开始学习Service之前我们先来了解下线程的一些概念! 1)相关概念: 程序:为了完成特定任务,用某种语言编写的一组指令集合(一组静态代码) 进程:运行中的程序,系统调度与资源分配的一个独立单位,操作系统会为每个进程分配一段内存空间!程序的依次动态执行,经历代码的加载,执行,执行完毕的完整过程! 线程:比进程更小的执行单元,每个进程可能有多条线程,线程需要放在一个进程中才能执行,线程由程序负责管理,而进程则由系统进行调度! 多线程的理解:并行执行多个条指令,将CPU
139 0