Service基础介绍

一、新建继承Service的类

 1 @Override
 2 public IBinder onBind(Intent intent){
 3     return null;
 4 }
 5 //并重写以下方法
 6 //第一次创建的时候调用
 7 @Override
 8 public void onCreate(){
 9     super.onCreate();
10     setForeground(true);//服务所在进程设置为前台进程
11 }
12 @Override
13 public void onStart(Intent intent,int startId){
14     super.onStart(intent,startId);
15 }
16 @Override
17 public void onDestroy(){
18     super.onDestroy();
19 }

二、激活服务

1 Intent intent = new Intent(this,DemoService.class);
2 startService(intent);
3 stopService(intent);

三、清单文件配置

1 <service
2     android:name=".DemoService"
3 />

四、绑定服务
startService一旦开启与调用者无关
bindService开启的服务,调用者关闭则服务也关闭

 1 //服务不存在时会自动创建服务
 2 bindService(intent,sConn,Context.BIND_AUTO_CREATE);
 3 //解除绑定,服务只能解除绑定一次,否则会出异常
 4 unbindService(sConn);
 5 
 6 private class SConn implements ServiceConnection{
 7     @Override
 8     public void onServiceConnected(ComponentName name,IBinder service){
 9         //绑定服务时调用service的值是服务中onBind方法返回的
10         
11     }
12     @Override
13     public void onServiceDisconnected(ComponentName name){
14         
15     }
16 }

服务的类中的部分代码

1 @Override
2 public IBinder onBind(Intent intent){
3     return null;
4 }
5 
6 @Override
7 public IBinder onUnbind(Intent intent){
8     return super.onUnbind(intent);
9 }

五、调用Service中的方法
  

  新建类继承Service

 1 public class DemoService extends Service{
 2     
 3     //新建内部类
 4     public class DemoServiceBinder extends Binder{
 5         DemoServiceBinder getService(){
 6             return DemoService.this;
 7         }
 8     }
 9 
10     //实例化内部类
11     private final IBinder basBinder = new DemoServiceBinder();
12     
13     //重写绑定方法,返回内部类对象
14     @Override
15     public IBinder onBind(Intent intent){
16         return basBinder;
17     }
18 
19     //要调用的方法
20     public void DemoMethod(){
21         ...
22     }
23 
24 }

Activity类

 1 public class DemoActivity extends Activity{
 2     
 3     //定义按钮的点击事件
 4     public void onClick(View v){
 5         //开始并绑定服务
 6         startService(serviceIntent);
 7         bindService(serviceIntent,conn,Context.BIND_AUTO_CREATE);
 8         
 9         //通过service调用服务里的方法
10         ...
11 
12         //解除绑定并停止服务
13         unbindService(serviceIntent);
14         stopService(serviceIntent);
15     }
16 
17     
18     private DemoService service;
19     //创建Service连接
20     private ServiceConnection conn = new ServiceConnection(){
21         public void onServiceConnected(ComponentName className,IBinder baBinder){
22             service = ((DemoService.DemoServiceBinder)baBinder).getService();
23         }
24 
25         public void onServiceDisconnected(ComponentName className){
26             service = null;
27         }
28     }
29 
30 }

 


  

posted @ 2013-04-07 12:11  轻云沉峰  阅读(202)  评论(0编辑  收藏  举报