Android Service基本用法
来源:互联网 发布:怒蛙网络 编辑:程序博客网 时间:2024/05/16 12:20
1.什么是Service?
Service是Android中实现程序后台运行的解决方案,它非常适合执行那些不需要和用户交互但是需要长期运行的任务。服务的运行不依赖任何用户界面,即使程序被切换到后台,后者用户打开了另外一个应用程序,服务仍然能够保持正常的运行。
2.服务和线程有什么关系?
通常,我们在程序中通过开启子线程来达到执行耗时任务的目的。那么,Service也在后台运行,也可以执行耗时操作,那它们的区别在哪里呢?其实,服务就是服务,线程就是线程,他们之间没有一毛钱的关系。服务是Android提供的后台运行程序的解决方案,通过这种解决方案,Activity可以很容易的去控制后台程序,也可以很容易的和后台程序交互。试想,如果没有Service,我们在Activity中之间开启子线程来执行耗时的操作,那么这时候我们的Activity什么时候去控制子线显,这时候Actvity还敢轻易的finish()吗?Activity结束之后子线程也就结束了,但是,这时候你能保证耗时操作完成了吗?所以,Service的出现,正是解决了这么一系列的问题。这样,我们就可以很方便的去执行后台任务了。
需要注意的是,服务并不是运行在一个独立的进程当中的,而是依赖于创建服务时所在的应用程序进程。当某个应用程序进程被杀掉时,所有依赖于该进程的服务也都会停止。
另外,不要被服务的后台概念所迷惑,实际上服务并不会自动开启线程,所有的代码都是默认运行在主线程中的。也就是说,我们需要在服务内部手动创建子线程,并在这里执行具体的任务,否则,就有可能ANR。
3.服务的基本用法
服务的基本用法也就是如何启动服务、如何停止服务、服务如何与Activity进行交互了。
(1).启动服务有两种方式:Activity.startService() Activity.bindService()
两者的区别主要体现在调用者和被调用者的生命周期上:通过StartService启动Service之后,调用者和被调用者没有任何的关系,而通过bindService()启动Service之后,如果调用bindService()函数的Activity结束了生命周期,那么该Activity启动的Service的生命周期也就结束了。
(2).销毁服务
I.通过startService()启动的服务,调用stopService()即可销毁,或者在Service里面调用stopSelf()。
||. 通过bindService()启动的服务,调用unBindService即可销毁
III.如果是先startService(),再通过bindService()绑定,那么需要同时调用stopService()和bindService()才可以销毁服务。
注意:多个Activity可以同时绑定一个服务,并且获得同一个IBinder对象,这个时候只有所有Activity与服务都解绑时,服务才会销毁。(一个Service必须要在既没有和任何Activity关联又处于停止状态的时候才会被销毁。)
(3).Activity与Service交互
未完待续。。。
- Android Service基本用法
- Android Service的基本用法
- Android中service基本用法,生命周期1
- Android中service基本用法,生命周期2
- Android学习笔记-Service 基本用法
- Android Service 服务的基本用法
- android---(Service服务的基本用法)
- Android Service的基本用法(1)
- Android下的Service的基本用法
- Android Service(服务)详解·(二)Service基本用法
- Service的基本用法
- Service 基本用法
- Service的基本用法
- Service基本用法
- Service的基本用法
- Service基本用法
- android学习十八(Service服务的基本用法)
- android中Service的基本用法和IntentService的使用
- linux configure: error: xml2-config not found. Please check your libxml2 installation
- diolog 显示时 activity已经销毁判断
- Bootstrap笔记
- Java动态规划 实现最长公共子序列以及最长公共子字符串
- Myeclipse2016编译不完全运行时报空指针
- Android Service基本用法
- WebView问题及解决方案
- SDL2.0 Image扩展库绘制TGA图片
- Redis
- Linux
- Format函数的用法总结
- javaweb的cookie的编码问题
- Java集合类详解
- Android 控件显示在最上层的方法