Service中有四个重要函数:  

    public IBinder onBind(Intent arg0);    //必须实现,返回接口给Service    public void onCreate();                //Service创建时调用    public void onStart(Intent intent,int startId);//通过startService()会调用    public void onDestroy();                //销毁时StopService()调用

 

通过StartActivity()函数启动Service,当第一次调用时会分别调用onCreate()和onStart在();

之后只会调用onStart();

通过函数StopService()结束Service,会调用onDestroy();

调用BindService():当Service未创建时调用onCreate()和onBind();当创建了只调用onBind();

使用函数bindService()和函数unbindService()可以绑定和解除绑定

对已经绑定的Service调用bindService()无效,即多次调用bindService()和调用一次bindService()一样。 unbindService()只能使用一次,即对于一个绑定的Service,只能调用一次unbindService(),多次调用会产生错误


该函数原型为:

bindService(Intent,ServiceConnection,BIND_AUTO_CREATE);

ServiceConnection是一个服务连接类,必须实现以下两个函数:

public void onServiceConnected(ComponentName arg0, IBinder arg1)//连接成功时调用public void onServiceDisconnected(ComponentName arg0)        //连接失败时调用

    示例如下:

private ServiceConnection conn=new ServiceConnection() {    @Override    public void onServiceConnected(ComponentName arg0, IBinder arg1) {        // TODO Auto-generated method stub        Toast.makeText(MainActivity.this, "success", Toast.LENGTH_LONG).show();        Log.i("SERVICE","success");    }    @Override    public void onServiceDisconnected(ComponentName arg0) {        // TODO Auto-generated method stub        Toast.makeText(MainActivity.this, "errer", Toast.LENGTH_LONG);        Log.i("SERVICE","errer");    }

    

    

Service实例:

    MainActivity.java:

private ServiceConnection conn=new ServiceConnection() {    @Override    public void onServiceConnected(ComponentName arg0, IBinder arg1) {        // TODO Auto-generated method stub        Toast.makeText(MainActivity.this, "success", Toast.LENGTH_LONG).show();        Log.i("SERVICE","success");    }    @Override    public void onServiceDisconnected(ComponentName arg0) {        // TODO Auto-generated method stub        Toast.makeText(MainActivity.this, "errer", Toast.LENGTH_LONG);        Log.i("SERVICE","errer");    }};
protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    Button button1=(Button)this.findViewById(R.id.btn1);    Button button2=(Button)this.findViewById(R.id.btn3);    Button button3=(Button)this.findViewById(R.id.btn4);    Button button4=(Button)this.findViewById(R.id.btn5);    button1.setOnClickListener(new OnClickListener() {        @Override        public void onClick(View arg0) {            // TODO Auto-generated method stub            startService(new Intent(MainActivity.this,NewService.class));        }    });    button2.setOnClickListener(new OnClickListener() {        @Override        public void onClick(View arg0) {            // TODO Auto-generated method stub            stopService(new Intent(MainActivity.this,NewService.class));        }    });    button3.setOnClickListener(new OnClickListener() {        @Override        public void onClick(View arg0) {            // TODO Auto-generated method stub            bindService(new Intent(MainActivity.this,NewService.class),conn,BIND_AUTO_CREATE);        }    });    button4.setOnClickListener(new OnClickListener() {        @Override        public void onClick(View arg0) {            // TODO Auto-generated method stub            unbindService(conn);        }    });}

NewService.java:

public class NewService extends Service {    @Override    public IBinder onBind(Intent arg0) {        // TODO Auto-generated method stub        Toast.makeText(NewService.this, "onBind", Toast.LENGTH_LONG).show();        Log.i("SERVICE","onbind");        return null;    }    public void onCreate() {        super.onCreate();        Log.i("SERVICE","oncreat");        Toast.makeText(NewService.this, "onCreat", Toast.LENGTH_LONG).show();    }    public void onStart(Intent intent,int startId) {        Log.i("SERVICE","onstart");        Toast.makeText(NewService.this, "onStart", Toast.LENGTH_LONG).show();    }    public void onDestroy() {        Log.i("SERVICE","ondestory");        Toast.makeText(NewService.this, "onDestory", Toast.LENGTH_LONG).show();    }}

Activity.xml

<?xml version="1.0" encoding="utf-8"?>

                    

AndroidManifest.xml增加:

 




更多相关文章

  1. android 上层wifi模块调用分析
  2. android打电话发短信
  3. Android震动器Vibrator调用
  4. Android(安卓)异步加载深入解析
  5. Android(安卓)启动过程
  6. android中HttpURLConnection调用getResponseCode()时崩溃 解决方
  7. Android(安卓)4.0 Launcher2源码分析——启动过程分析
  8. android增加5G热点
  9. 箭头函数的基础使用

随机推荐

  1. 拦截系统收到短信的Notification
  2. Android(安卓)Binder机制分析(4) Parcel
  3. Android(安卓)Studio中使用simpleUML绘制
  4. Android动态壁纸解析
  5. android中.this与.class使用的区别
  6. Android(安卓)定时任务刷新的多种实现方
  7. 高德地图-根据经纬度获取地址(逆地理编码)
  8. Android中visibility属性详解
  9. android分辨率详解
  10. cocos2dx2.1.4FATAL EXCEPTION: GLThread