Android 中Service组件

  Serivce组件:

首先要继承于Serivce,实现其生命周期中的方法,然后还需要在AndroidMainfest.xml<service>声明才能使用

可以调用startService来启动一个服务,或者使用bindService来绑定一个已经存在的服务,还可以通过RPC(远程进程调用)机制来实现不同进程之间Service的调用。

生命周期 onBind,是一个必须实现的方法,返回一个绑定接口给service

onCreate:Service第一次被创建时,由系统调用。

onStart(),当通过startService()方法启动serivce时,该方法调用

onDestorySerivce不再使用时,系统调用该方法

 

要使用一个Service需要在AndroidMainfest.xml文件<service>声明serivce,<service>元素中添加<intent-filter>指定如何访问该Service.

 

 

注意:调用startService 的生命周期是这样的onCreate-----------à onStart

调用bindService 的生命周期是这样的onCreate-----------à onBind

package com.king.android.controls;
  2 
  3 import android.app.Service;
  4 import android.content.Intent;
  5 import android.os.IBinder;
  6 import android.widget.Toast;
  7 
  8 /**
  9 
 10  * 描述:第一个服务实例演示
 11  * 作者:Andy.Liu
 12  * 时间: 2012-7-18  上午07:21:48
 13  **/
 14 public class FirstService extends Service {
 15     
 16     private static final String MY_SERVICE = "com.king.android.controls.my_service";//服务指定的动作
 17 
 18     @Override
 19     public IBinder onBind(Intent arg0) {
 20         
 21         Toast.makeText(FirstService.this, "onBind.............", Toast.LENGTH_LONG).show();
 22         return null;
 23     }
 24     @Override
 25     public void onCreate() {
 26         Toast.makeText(FirstService.this, "onCreate...........", Toast.LENGTH_LONG).show();
 27         super.onCreate();
 28     }
 29     
 30     @Override
 31     public void onStart(Intent intent, int startId) {
 32         Toast.makeText(FirstService.this, "onStart.............", Toast.LENGTH_LONG).show();
 33         super.onStart(intent, startId);
 34     }
 35     
 36     @Override
 37     public void onDestroy() {
 38         Toast.makeText(FirstService.this, "OnDestory............", Toast.LENGTH_LONG).show();
 39         super.onDestroy();
 40     }
 41 
 42 }
 43 
 44 
 45 
 46 
 47 
 48 package com.king.android.controls;
 49 
 50 import android.app.Activity;
 51 import android.app.Service;
 52 import android.content.ComponentName;
 53 import android.content.Intent;
 54 import android.content.ServiceConnection;
 55 import android.os.Bundle;
 56 import android.os.IBinder;
 57 import android.view.View;
 58 import android.view.View.OnClickListener;
 59 import android.widget.Button;
 60 import android.widget.Toast;
 61 
 62 import com.king.android.R;
 63 
 64 /**
 65 
 66  * 描述:演示Service的Activity
 67  * 作者:Andy.Liu
 68  * 时间: 2012-7-18  上午07:27:19
 69  **/
 70 public class ServiceActivity extends Activity implements OnClickListener{
 71     private static final String MY_SERVICE = "com.king.android.controls.my_service";//服务指定的动作
 72     @Override
 73     protected void onCreate(Bundle savedInstanceState) {
 74         super.onCreate(savedInstanceState);
 75         initView();
 76     }
 77     
 78     private void initView(){
 79         setContentView(R.layout.show_service_layout);
 80         Button btnSerivce = (Button) findViewById(R.id.btn_start);
 81         btnSerivce.setOnClickListener(this);
 82         btnSerivce = (Button) findViewById(R.id.btn_stop);
 83         btnSerivce.setOnClickListener(this);
 84         btnSerivce = (Button) findViewById(R.id.btn_bind);
 85         btnSerivce.setOnClickListener(this);
 86         btnSerivce = (Button) findViewById(R.id.btn_unBind);
 87         btnSerivce.setOnClickListener(this);
 88     }
 89 
 90     @Override
 91     public void onClick(View v) {
 92         Intent intent = null;
 93         switch(v.getId()){
 94         case R.id.btn_start:
 95             intent = new Intent();
 96             intent.setAction(MY_SERVICE);
 97             startService(intent);
 98             break;
 99         case R.id.btn_stop:
100             intent = new Intent();
101             intent.setAction(MY_SERVICE);
102             stopService(intent);
103             break;
104         case R.id.btn_bind:
105             intent = new Intent();
106             intent.setAction(MY_SERVICE);
107             bindService(intent, conn, Service.BIND_AUTO_CREATE);
108             break;
109         case R.id.btn_unBind:
110             intent = new Intent();
111             intent.setAction(MY_SERVICE);
112             unbindService(conn);
113             break;
114         }
115     }
116     
117     private ServiceConnection conn = new ServiceConnection() {
118         
119         @Override
120         public void onServiceDisconnected(ComponentName name) {
121             Toast.makeText(ServiceActivity.this, "连接成功", Toast.LENGTH_LONG).show();
122         }
123         
124         @Override
125         public void onServiceConnected(ComponentName name, IBinder service) {
126             Toast.makeText(ServiceActivity.this, "断开连接", Toast.LENGTH_LONG).show();
127         }
128     };
129 
130 }

原文地址:https://www.cnblogs.com/liuzenglong/p/2596724.html