Service基础知识点

来源:互联网 发布:人工智能龙头股票 编辑:程序博客网 时间:2024/05/29 17:28

1、Activity:

import android.app.Activity;import android.content.ComponentName;import android.content.Intent;import android.content.ServiceConnection;import android.os.Bundle;import android.os.IBinder;import android.view.View;public class DemoActivity extends Activity {    /** Called when the activity is first created. */private Intent intent ;private MyServiceConnection conn;private IService ibinder;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);                intent = new Intent(this,MyService.class);        conn = new MyServiceConnection();    }        /**     * 希望一个服务一直存在,并且能够调用服务里面的方法。     * 启动服务     * 先通过startService()的方式来启动服务,再通过onBind()的方式去绑定服务。     *      * onCreate() --> onStart() -->onBind()     *      *      * 停止服务:     * 1: 先unbindService()来解绑服务,再通过stopService()来停止服务     * onUnbind() ---> onDestory()     *      * 2:先stopService()来停止服务,再通过unbindService()来解绑服务     *      * onUnbind() ---> onDestory()     *      *      * 通过startService()方式启动的服务,必须通过调用stopService()才能停止服务。     * 如果服务还有绑定对象,那么一个服务是不会被停止的。     *      *      * 怎么去调用服务里面方法。1 必须通过bindService()才能和服务进行通讯。打开了一个ServiceConnection连接。服务给我们返回了一个IBinder对象     */    public void startservice(View v){    startService(intent);    }        public void stopservice(View v){    stopService(intent);    }            /**     * 一个访问者只能和服务绑定一次,多次绑定那么服务里面的onBind()方法不会多次被调用     */    public void bindservice(View v){    bindService(intent, conn, BIND_AUTO_CREATE);    }        /**     * 一旦访问者和服务断开了连接,如果再次解绑服务,会出现异常     */    public void unbindservice(View v){    unbindService(conn);    }            private final class MyServiceConnection implements ServiceConnection{public void onServiceConnected(ComponentName name, IBinder service) {// TODO Auto-generated method stubibinder = (IService) service;}public void onServiceDisconnected(ComponentName name) {// TODO Auto-generated method stub}        }            public void call(View v){    ibinder.invoke();    }}


2、MyService

import android.app.Service;import android.content.Intent;import android.os.Binder;import android.os.IBinder;import android.util.Log;public class MyService extends Service {private IBinder ibinder = new MyBinder();@Overridepublic void onCreate() {// TODO Auto-generated method stubsuper.onCreate();Log.i("i", " onCreate()");}@Overridepublic void onStart(Intent intent, int startId) {// TODO Auto-generated method stubsuper.onStart(intent, startId);Log.i("i", " onStart()");}@Overridepublic IBinder onBind(Intent intent) {// TODO Auto-generated method stubLog.i("i", " onBind()");return ibinder;}@Overridepublic boolean onUnbind(Intent intent) {// TODO Auto-generated method stubLog.i("i", " onUnbind()");return super.onUnbind(intent);}@Overridepublic void onDestroy() {// TODO Auto-generated method stubsuper.onDestroy();Log.i("i", " onDestroy()");}private final class MyBinder extends Binder implements IService{public void invoke() {// TODO Auto-generated method stubcallme();}}private void callme(){Log.i("i", "服务里面的方式被调用了");}}


3、IService

public interface IService {public void invoke();}



4、最后别忘了在AndroidManifest.xml中注册上Service


原创粉丝点击