关于Service深刻了解

来源:互联网 发布:tv霸网络电视 编辑:程序博客网 时间:2024/05/16 17:11

过去对Service并不是很了解 所以在使用的时候出现很多让人啼笑皆非的错误...

今天趁着空闲之余重新将service再次研究


Service的生命周期

要开启Service  第一步必须是创建Service 很显然 就是Service的onCreate()方法

第二步就应该是Service的onStart()方法 但是现在用不onStart()方法 改为onStartCommand()方法 

其实onStartCommand()方法中也同时调用了onStart()方法

最后就到了Service的onDestroy()方法

在我理解中 Service大致的生命周期就是这样


Service的onBind()方法

每当我继承Service就发现要重写Service中的onBind()方法

原来我并不懂onBind()方法的用法 

今天学习之后 才恍然大悟

onBind()方法其实就是用于和Activity建立连接关系的

通过ServiceConnection类获取Service中的onBind()方法的返回值

达到与Activity建立连接的目的

所以一个比较标准的Service就这么写:

@Overridepublic int onStartCommand(Intent intent, int flags, int startId) {new Thread(new Runnable() {@Overridepublic void run() {// 开始执行后台任务}}).start();return super.onStartCommand(intent, flags, startId);}class MyBinder extends Binder {public void startDownload() {new Thread(new Runnable() {@Overridepublic void run() {// 执行具体的下载任务}}).start();}}

最后提及下 Service和Activity一样都是运行在主线程里的

所以千万别再Service里直接写耗时操作 这就是我原来犯过的错误

0 0
原创粉丝点击