Service

1. Service是什么

如果一些功能耗时很长,那么最好不用Activity,这样会造成其它进程的阻塞。它是一个应用程序组件,没有图形化界面,通常就是针对那些耗时比较长的操作。它既然是在后台一直运行,那么一些诸如下载,播放mp3,更新ui,更新ContentProvider,发送intent,以及启动系统通知等等这些操作都可以通过它来完成。


2. Service不是什么

Service 不是一个单独的进程(有自己的一份资源,一个进程最少有一个线程,而一个应用程序最少有一个进程)

Service也不是一个线程(和其它线程共享一份资源),其实它在主线程内,如果service阻塞了,那么整个应用程序也就没有响应。


3.使用service的方法

创建一个Service的类,继承Service类,实现其中的onBind方法,onCreate,onStartCommand,onDestroy方法,当第一调用的时候onCreate方法会被调用,之后再调用就不会再调用onCreate方法了,而是调用onStartCommand。


这里要做一个区别,就是context.startService和context.bindService的用法和方法调用的顺序是不一样的。startService用于service本身和context(通常是activity)无关的情况,也就是说即使context退出了,service仍然会继续运行。而bindService不一样,如果context退出了,那么service也就中断了。

比如下载啊,发送啊,监听啊什么的,最好是用startService,用户可能点击了下载又去其它界面干别的事情了。这样的话就相当于context退出了,如果使用bindService的话下载发送这些就停了。

其实Service也就相当于一个Activity的一部分,只是它不可见而已。它也是通过intent来进行启动,参数是当前activity和service,然后再调用startService就行。如果想停止,就调用stopService,同样使用intent。



 如果你想开启一个服务的话,必须在activity中开启,因为服务和activity在一个进程,如果你想做一些耗时的操作,那么在onStart方法中重新开启一个线程来做这个事情

4. 关于notification等等service的使用

如果你想要获取系统的notification的权限,首先要创建一个NotificationManager的对象

NotificationManager nm =(NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值