最近做练习项目的时候发现,有很多像数据库操作这样的耗时操作,之前是在单个activity里面开个线程出来,感觉这样太麻烦,不便重复使用相同功能。所以想在单独的Service组件里面放置这些耗时操作。所以就在项目里第一次试用一下–。
首先,Service是Android四大组件中的一个,它和Activity非常相似,也有自己的生命周期,但不和用户交互,而是长时间留驻在后台运行,它与线程Thread没什么关系–(完全不同的东西)。
同样,Service也要在AndroidManifest中配置。
Service的一系列生命周期方法:
IBinder onBind(Intent intent)——必须实现的方法,绑定该service时回调该方法
void onCreate()——Service被创建时回调该方法
void onDestroy()——Service被关闭之前回调该方法
int onStartCommand(Intent intent, int flags, int startId)——Service被启动时回调该方法
boolean onUnbind(Intent intent)——Service被断开连接时回调该方法
程序中运行Service的方法:
~1.通过Context的StartService()方法,该方法,访问者和Service无关联,访问者退出,Service也仍然运行,调用Context的StopService()关闭。
~2.通过Context的bindService()方法,访问者和Service绑定。
1方法,Service和调用者没有太大关联,如果二者之间需要进行方法调用或交换数据,应该用方法二绑定Service
方法二完整方法签名:
BindService(Intent service,ServiceConnection conn,int flags)
~通过intent指定要启动的service;
~ServiceConnection监听访问者和Service之间连接情况。连接成功调用onServiceConnected(ComponentName name,IBinder service)方法,宿主异常中止时调用onServiceDisconnected(Co