一、Service是什么?
- Service是一个应用组件,它用来在后台完成一个时间跨度比较大的工作,且没有关联任何界面。(生命周期在应用程序进程的主线程运行)
- 一个Service可以完成的工作:访问网络(在Service中启动分线程)、播放音乐、文件IO操作、大数据量的数据库操作等。如果需要在Service中处理一些网络连接等耗时的操作,那么应该将这些任务放在分线程中处理,避免在主线程中阻塞用户界面。
- 特点:Service在后台运行,不用与用户进行交互。即使应用退出,服务也不会停止。当应用进程被杀死时(例如一键清理),服务便会停止。
二、Service的分类
- Local Service (本地服务)
Service对象与Service的启动者在同个进程中进行,两者的通信是进程内的通信。 - Remote Service (远程服务)
Service对象与Service的启动者不在同个进程中进行,这时存在一个进程间的通信问题,Android专门为此设计了AIDL来实现进程间的通信。
三、Service的定义
定义一个类继承于Service类,重写方法。
public class MusicService extends Service { public MusicService(){ Log.i("TAG","MusicService"); } @Override public IBinder onBind(Intent intent) { Log.i("TAG","onBind"); return new Binder(); //return 到ServiceConnection的onServiceConnected中 } @Override public void onCreate() { super.onCreate(); Log.i("TAG","onCreate"); } @Override public int onStartCommand(Intent intent, int flags, int startId) { Log.i("TAG","onStartCommand"); return super.onStartCommand(intent, flags, startId); //返回值不同,Service被杀掉的情况也不同 } @Override public void onDestroy() { super.onDestroy(); Log.i("TAG","onDestroy"); } @Override public boolean onUnbind(Intent intent) { Log.i("TAG","onUnbind");