笔记:学习 Android -Services 基础

来源:互联网 发布:港口历年数据 编辑:程序博客网 时间:2024/05/17 03:53

何谓Services?

以下都是根据官方API Guide文档思路所写,只是加上自己的个人的简化和理解。

Android四大组件之一。她的作用是在後台工作,没有UI。
一些工作需要长时间运行,就需要用到她。
网上查到,通常说的例子就是下载档案,播音乐,动作片等等。


继续了解Service在Android扮演什麽角色。

从API Guides文档上说明,他们说明service有两类型,一个是Started,一个是Bound(Bind的过去分词,纠结他们为什麽要用过去式,哈,英文没学好….)

1.Started:
当程序用startService()叫一下S 这个service,那S就是属於这类型。
特点是就算那个叫他的程序没了,这S仍在,一直运行。
通常是做一些单一动作,不会反回些什麽给Caller。
需要时就用他,不用时就放在一边。备胎的感觉,用完就任由自生自灭,但好处是有机会得永生呢…….

2.Bound:
当程序跟B service 用bindSerives()结合(Bind)一起。那B就是Bound service。
这样就会形成一种Client-server关系
B就是server,负责处理程序的的要求,给结果等等。
B可以跟不同程序结合。
如所有程序都跟B unbind,B就会结束其生命。
备胎的升华,可惜结果都是杯具,没有要就…..

Service这角色挺伤感的呢….

但有趣的是,一个Service又可以同时拥有以上两个特点,可永生,又可跟人结合…..
程序上只需都定义好onStartCommand()onBind()就可。
哈,皆大欢喜。


Permission的问题

之後就是说到因为Service都可以给其他应用组件(application component)去叫。
如果只想你自己的去叫,就需要在manifest上定义service为private。

重要概念

-Service不是一个独立的进程。Service object是运行在一个进程里。
-Service不是一个线程。它会在main thread中运行,本身不会另建线程。所以如果这个Service是很耗时,就需要在service中定义一个thread去做这件事,不然会有ANR errors。

Methods

自定义Service时有四个callback methods 需要override。
现在还不明白为何要叫callback….有待理解

以我理解,以下四个方法都是写由系统去调用,系统会叫回Service的methods….所以是Callback?有待查明。

-onStartCommand()
startService()叫了一下,系统就会叫这个method。
当做完後,自己要叫stopSelf()stopService(),不然这Service会一直在後台永生不死。
-onBind()
bindService(),叫了一下,系统就会叫这个method。
要returning IBinder…?
-onCreate()
当service第一次启动,这个就会叫。如service已在运行中,这个不叫。
-onDestroy()
作用如其名,当被杀时系统就会叫。

从说明看得出,这四个方法是被动的,统一由系统去叫。
所以Activity中的OnCreate method等都是callback methods?有待查明

强制被杀

当系统资源底下时,一些 Started long-running service,是高危人士。容易被杀。
最易到最难被杀
Started Service>>Bound Service>>foreground Service

当看了一点官方API Processes and Thread文章,知道系统中每一项Processes and Thread都会分成四类。一个重不重要排名。越重要当然越不会强制被杀。
Service 的process根据不同条件都归类在前三的。

所以,人们都说,长时间运行的工作,最好用Service,因为他有比较高的重要性,系统不会随便就杀。

程序设计应要考虑这个。


总结:

1.一些工作需要长时间运行的,用Service
2.Service这角色挺伤感的
3.重要概念
4.Service有四个callback methods
5.考虑强制被杀情况

资料叁考:
官方API Guide>>Service
http://developer.android.com/guide/components/services.html
官方reference >>Service
http://developer.android.com/reference/android/app/Service.html
官方API Guide>>Process and Threads
http://developer.android.com/guide/components/processes-and-threads.html

0 0
原创粉丝点击