新的进程或者更加重要的进程可以启动...
进程的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的类似的,只不过服务没有界面.