Android----service服务
来源:互联网 发布:js拼图游戏源码 编辑:程序博客网 时间:2024/06/10 08:25
一.线程和进程
进程:是一块独立内存控件,专门为某个应用程序去开辟的,进程中可以有多个线程.
进程:是一块独立内存控件,专门为某个应用程序去开辟的,进程中可以有多个线程.
线程:是存在进程中,每个线程都会有自己的进程.
进程与线程的区别:
(1)地址空间:进程内的一个执行单元;进程至少有一个线程;它们共享进程的地址空间;而进程有自己独立的地址空间;
(2)资源拥有:进程是资源分配和拥有的单位,同一个进程内的线程共享进程的资源
(3)线程是处理器调度的基本单位,但进程不是.
4)二者均可并发执行.
(2)资源拥有:进程是资源分配和拥有的单位,同一个进程内的线程共享进程的资源
(3)线程是处理器调度的基本单位,但进程不是.
4)二者均可并发执行.
在一个应用程序启动时候,如果没有其他的组件正在运行着,那么 安卓系统会创建一个 linux 的进程, 这个进程中,运行着这个组件.
进程的生命周期:安卓系统会尽可能让一个应用程序的进程保持尽可能的长的时间... 但是最终也会去移除一些老的进程, 去回收内存空间,以便于一些
新的进程或者更加重要的进程可以启动...
进程的5种级别,从高到底,如下:
1.前台进程(--- foreground process):一个应用程序启动了,处于前台,可以直接响应用户的点击, 触摸事件(获得焦点的状态), 那么这个时候就是属于前台进程.
2.可视进程(------ visible process):一个应用程序启动了, 不能直接去响应用户的点击, 触摸事件,但是仍然可以看得见. 那么这个应用程序的进程就是属于可视进程.
3.服务进程(----- service process):一个程序退出了, 但是 仍热有一个服务在后台一直运行着, 这个时候这个应用程序的进程就是属于服务进程.
4.后台进程(---- background process):一个应用程序启动, 内部没有服务在运行, 只有activity运行着,然后点击了最小化. 那么这个时候应用程序就是属于后台进程.
5.空进程(--- empty process):一个应用层启动,又正常的退出了, 没有任何其他的组件正在运行着, 那么这个时候, 这个进程就是属于空进程.
二.开启服务的生命周期:
onCreate():创建服务的时候调用;
onStartCommand():收到开启服务的命令的时候调用;
onDestroy():停止服务的时候调用;
onBlind():绑定服务的时候调用
onUnblind():解绑服务的时候调用
开启服务的时候,服务的生命周期如下:
1. 开启服务, 那么首先会创建服务的对象. Oncreate执行, 然后onstartCommand 执行 .
2. 服务就一直在后台运行着. 干你想干的事儿..
3. 直到停止服务, 服务才销毁...
在开启服务的时候, 服务只能被开启一次, 重复去开启服务, 服务对象并不会新创建. 停止服务, 只会销毁服务对象一次.重复开启, 只会去重复调用 onstartCommand , 并不会让服务重新创建.
三.绑定服务的生命周期:
内存溢出(out of memory):内存不够用时,直接oom异常
内存泄漏(memory leak):在释放资源的时候,没有将必要的资源给关闭释放掉,就会出现内存泄漏
绑定服务的生命周期如下:
四:开启服务和绑定服务的区别:
开启服务:服务开启后一直在后台运行着,与Activity是否存在无关
绑定服务:可以去调用服务中的方法,开启服务的Activity销毁了,则这个绑定的服务也销毁了
五.编写一个服务的具体步骤:
第一步:
写个类去继承 Service ,并且重写 onCreate方法, 是服务在创建的时候会调用的方法 , 可以在oncreate中去
干耗时的事儿, 但是这个耗时的事必须运行在子线程中
第二步:
在清单文件中进行注册.
第三步:
在某个地方,执行代码的时候,去启动服务
点击一个按钮后,去开启服务
Intent intent =newIntent();
intent.setClass(this,HelloService.class);
//启动服务
startService(intent);
注意点:
1. 服务也是运行在主线程中,所以服务所在的线程不能被阻塞. 如果要干耗时的事儿, 必须写到子线程中
2. 服务与activity的类似的,只不过服务没有界面.
阅读全文
1 0
- 【Android】Android Service 服务
- Android (服务Service)
- android Service--服务
- Android service 服务 笔记
- Android:服务--Service
- Android Service---启动服务
- Android Service---终止服务
- Android Service---启动服务
- Android Service---终止服务
- android Service--服务 .
- Android Service服务
- android 理解service服务
- android远程服务service
- Android服务之Service
- Android Service 服务
- Android服务之Service
- Android Service服务
- Android 服务Service
- intellij idea marven已经导入包但是文件中提示找不到该包
- Git 常用命令
- 长连接、短连接、长轮询和WebSocket
- L1-008. 求整数段和
- JavaScript 字符串(String)对象
- Android----service服务
- Visual Assist X 中使用doxygen的模板注释
- HDU6050Funny Function
- Filter visualization
- 企业管理理论综述与实践 — 绩效
- 1189: 选票统计(二)(结构体专题)
- 从零开始山寨Caffe·贰:主存模型
- spring boot(14)-pom.xml配置
- Linux应用知识杂记