今天学习了一下Service,现在来总结一下。
除了常用的Activity之外,Service就是次常用的了,Service是运行在后台的一种服务程序,一般Service是处理一些不与用户交互的东西,比如播放音乐。
使用Service要继承Service类。
我们通过调用startService()启动一个Service或者使用bindService()方法来绑定一个存在的Service,还可以通过RPC(远程进程调用)机制来实现不同进程间Service的调用
Service中定义了一系列和自身声明周期有关的方法,重要的方法有:
onBind(Intent intent):是必须实现的一个方法,返回一个绑定的接口给Service
onCreate():当Service第一次被创建时,由系统调用
onStart(Intent intent,int startId):当通过startService()方法启动Service时,该方法被调用
onDestroy():当Service不再使用,系统调用该方法
启动,停止,绑定,解绑定Service的例子如下:
private OnClickListener listener = new OnClickListener()
{
@Override
public void onClick(View v)
{
Intent intent = new Intent(MainActivity.this, TestService.class);
switch (v.getId())
{
case R.id.button1:
startService(intent); //启动服务
break;
case R.id.button2:
stopService(intent); //终止服务
break;
case R.id.button3:
bindService(intent, conn, Service.BIND_AUTO_CREATE); //绑定服务
break;
case R.id.button4:
unbindService(conn); //终止绑定
break;
default:
break;
}
}
};
private ServiceConnection conn = new ServiceConnection() //bindService需要用到的一个类
{
@Override
public void onServiceDisconnected(ComponentName name)
{
Log.i(TAG,"UnBind Service");
Toast.makeText(MainActivity.this, "断开连接!", Toast.LENGTH_SHORT);
}
@Override
public void onServiceConnected(ComponentName name, IBinder service)
{
Log.i(TAG,"Bind Service");
Toast.makeText(MainActivity.this, "连接成功!", Toast.LENGTH_SHORT);
}
};
Service还可以创建AIDL(接口定义语言)文件来生成两个进程之间相互访问的代码,这个以后有需要再继续学习