1. service 只适合explicit调用
2. service应该使用自己的线程,要不同一线程的service会干扰activity的响应。
3. 除了跨进程的service,看不出本地service有太多的意义,用线程也能解决。
4. 系统可在oom时kill service,在内存允许是重启service,用户可定义如何,是否重启服务
4。1 不重启
4。2 重启,但提供有一个NULL intent
4。3 重启,但提供上一次的intent
5。可把服务放在前端,此时应提供一个Notication放在Status Bar,系统尽量不杀死前端(forground)线程。
6。启动的服务基本上的异步和单向的,bind的服务是同步和双向的。bind可制定服务的更多关于life和priority的属性
7。lifecycle
7。1单start的service只能被stopService或stopSelf停止,一次stop足够
7。2单bing的service在所有的binding结束后停止
7。3有start和bind的service: if a stopped service still has ServiceConnection
objects bound to it with the BIND_AUTO_CREATE
set, it will not be destroyed until all of these bindings are removed.
Bound Service
1。 只调用一次onBind()
更多的comment见bind service