android service是android的4大组件之一,他运行的主线程中,所以在service中进行耗费时间的操作,还是必须进行启动线程,首先有两种方式进行启动service并且传值:
很感谢引路蜂,写的博客,
http://blog.csdn.net/mapdigit/article/details/8709039
第一种方式,使用context进行启动service,
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
startCustomService();
Intent intent = new Intent(this,LocalService.class);
startService(intent);
』
LocalService:
public class LocalService extends Service {
public class LocalBinder extends Binder {
String stringToSend = "I'm the test String";
LocalService getService() {
Log.i("TAG", "getService ---> " + LocalService.this);
return LocalService.this;
}
}
@Override
public IBinder onBind(Intent intent) {
Log.e("service", "this is onBind");
return null;
}
@Override
public boolean onUnbind(Intent intent) {
Log.e("service", "this is onUnBind");
return super.onUnbind(intent);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.e("service", "this is onStartCommand");
return super.onStartCommand(intent, flags, startId);
}
@Override
public void onCreate() {
Log.e("service", "this is onCreate");
super.onCreate();
}
public LocalService() {
super();
Log.e("service", "this is LocalService");
}
@Override
public void onDestroy() {
Log.e("service", "this is onDestroy");
super.onDestroy();
}
}
在这种启动的过程中,我们可以通过intent进行传值,可以将activity中的数据传递到service中,并且在service中进行获取到
2,第二种是进行service的绑定,将一个service绑定到activity上,并且也可以通过intent进行值得传递
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
startCustomService();
Intent intent = new Intent(this,LocalService.class);
// startService(intent);
bindService(intent,serviceConnection, BIND_AUTO_CREATE);
serviceConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
localService = ((LocalService.LocalBinder)service).getService();
String recStr = ((LocalService.LocalBinder) service).stringToSend;
Log.e("service", recStr);
}
@Override
public void onServiceDisconnected(ComponentName name) {
}
};
两种启动方式,都可以通过广播进行将值返回到activity中,在两种调用的时候service的启动方式
整体生命周期 指Service在onCreate()和onDestroy()之间。和Activity类似,Service可以在onCreate () 进行一些初始化工作,而在onDestroy () 中释放资源。比如,一个音乐播放器可以在onCreate() 创建用来播放音乐的线程,而在onDestroy() 停止这个线程。
·活动生命周期 Service 在 onStartCommand() 或 onBind() 后开始活动,每个方法分别处理来自 startService和 bindService() 发过来请求 Intent。如果是“Started”的Service,那么它活动的生命周期和Service的整个生命周期是一致的。如果是“绑定”的Service,那么它的活动生命周期终止与unbind()。