android service笔记

来源:互联网 发布:目标软件郑州 编辑:程序博客网 时间:2024/06/06 19:01

1.Service作为android 4大组件之一,与Activity十分相似,都代表可执行的程序。Service再后台运行,没有用户界面,有自己的生命周期。


2.创建配置Service

右键点击代码包 new-->Service-->Service

配置属性 export   能否被其他应用访问

Enable 是否启用

Manifest.xml文件中添加配置

<service            android:name=".MyService"            android:enabled="true"            android:exported="true"></service>
3.通过Intent启动关闭服务

 
 Intent  intent = new Intent(this,MyService.class);        startService(intent);        stopService(intent);


4.绑定Service并通过Binder对象进行通信(重要)

在Service类中定义内部类继承Binder类,并在方法onBind返回对象

    MyBinder binder = new MyBinder();    class MyBinder extends Binder{        public void test(){                    }    }    @Override    public IBinder onBind(Intent intent) {  //必须实现,返回一个IBinder对象,应用程序通过其与Service通信        return binder;    }

在Activity类中通过以下方法绑定与解绑:

bindService(Intent intent,ServiceConnection conn,int flags)

unbinderService(ServiceConnection conn)

conn对象用于监听访问者(Activity)与服务(Service)之间连接状况

flag值得是绑定时是否自动创建Service (0或BIND_AUTO_CREATE)

    private MyService.MyBinder myBinder; //通过Service返回的MyBinder对象,访问Service内部数据,实现通信    private ServiceConnection connection = new ServiceConnection() {        @Override        public void onServiceConnected(ComponentName name, IBinder service) {//连接成功时回调该方法                myBinder = (MyService.MyBinder)service;                myBinder.test();  //通信逻辑        }        @Override        public void onServiceDisconnected(ComponentName name) { //Service所在进程异常终止或其他原因终止,导致连接断开时调用        }    };
bindService(intent,connection,BIND_AUTO_CREATE);        unbindService(connection);

5.Service生命周期



6.IntentService(异步的、会自动停止的服务)

Service默认在主线程中,进行耗时操作容易ANR

IntentService采用队列管理Intent,开启一条新的worker线程处理Intent,只需重写onHandleIntent()方法,处理逻辑

 public MyIntentService() {        super("MyIntentService");    }    @Override    protected void onHandleIntent(Intent intent) {}



原创粉丝点击