千家信息网

安卓中Service组件怎么用

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章主要介绍安卓中Service组件怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1:Service的创建Service就是服务的意思,它的特点就是当你开启服务以后即
千家信息网最后更新 2026年10月31日安卓中Service组件怎么用

这篇文章主要介绍安卓中Service组件怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

1:Service的创建

Service就是服务的意思,它的特点就是当你开启服务以后即使你关闭app它也在运行,直到调用停止服务的方法。典型的用法就是音乐播放器。

Service的创建同Activity一样最好不要自己继承写类。创建方法为自己项目右键->new->other->Android Object->然后一直下一步就可以了(中间有取类名可以自行更改)

2:Service的生命周期

Service的生命周期有2种一种是开启服务和绑定服务。大家看上图就可以一目了然。

3:启动和绑定服务以及关闭服务

首先是第一种启动服务,使用一个按钮并在其监听事件里启动服务,代码如下

//第一个按键启动服务findViewById(R.id.button1).setOnClickListener(new OnClickListener() {    @Override    public void onClick(View v) {        service = new Intent();        //设置跳转到的服务        service.setClass(MainActivity.this, MyService.class);        //启动服务        startService(service );    }});//第二个按键关闭服务findViewById(R.id.button2).setOnClickListener(new OnClickListener() {    @Override    public void onClick(View v) {        stopService(service);    }});

当启动服务以后如果在启动只会调用onStartCommand方法,不会再新建一个服务对象(构造方法只执行一次)。如下图所示

正常的启动结束服务打的日志图如下(被水印遮住了蛋疼。。我源代码会上传大家可以自己验证)

然后是第二种绑定服务,方法跟上面类似,代码如下

//第三个按键绑定服务findViewById(R.id.button3).setOnClickListener(new OnClickListener() {    @Override    public void onClick(View v) {        service = new Intent();        //设置跳转到的服务            service.setClass(MainActivity.this, MyService.class);            //启动服务        bindService(service, null, Context.BIND_AUTO_CREATE);    }});//第四个按键解绑服务findViewById(R.id.button4).setOnClickListener(new OnClickListener() {    @Override    public void onClick(View v) {        unbindService(null);    }});

绑定服务方法的运行顺序如下(如生命周期所示)

4:动态的访问Service的方法

刚才我启动绑定服务方法时候中间那个参数为null,现在我们来为它传入一个参数(由于要传入的对象是一个接口所以必须重写它的方法)

private ServiceConnection conn = new ServiceConnection() {                                                                                                                                                                                                                               @Override    public void onServiceDisconnected(ComponentName name) {                                                                                                                                                                                                                                   }                                                                                                                                                                                                                               @Override    public void onServiceConnected(ComponentName name, IBinder service)   {                                                                                                                                                                                                                             }};findViewById(R.id.button1).setOnClickListener(new OnClickListener() {                                                                                                                                                                                                                                 @Override    public void onClick(View v) {        Intent service = new Intent(MainActivity.this, MyService.class);        bindService(service , conn , Context.BIND_AUTO_CREATE);    }});

回到Service的代码页面,在Service中写一个play方法并打日志以便我们观看结果,然后写一个内部类继承binder并写一个方法来调用Service的play()方法,最后在onbind方法返回一个binder对象

@Overridepublic IBinder onBind(Intent intent) {    return new MyBinder();}                                                                                                                           class MyBinder extends Binder{    public void start()    {        play();    }}                                                                                                                           public void play(){    Log.e("MyService", "play()");}

在回到Activity代码,在conn接口中的onServiceConnected()方法中获取Mybinder对象,在调用对象的start()方法,代码如下

private ServiceConnection conn = new ServiceConnection() {                                                             @Override    public void onServiceDisconnected(ComponentName name) {                                                                 }                                                             @Override    public void onServiceConnected(ComponentName name, IBinder service) {        //获取Service中的Mybinder的对象        MyBinder binder = (MyBinder) service;        //调用Mybinder中的方法,里面就包含了Service中的方法        binder.start();                                                         };

大功告成。日志打印结果如下

以上是"安卓中Service组件怎么用"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

服务 方法 对象 代码 按键 周期 就是 日志 生命 组件 安卓 内容 参数 接口 篇文章 结果 运行 一目了然 大功告成 三个 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 中关村互联网 科技集团 互联网科技行业发展 互联网科技开发公司 广州互联网科技公司 四川狮子座互联网科技 互联网金融科技委员会 互联网科技公司招聘 汉立互联网科技有限公司联系电话 互联网科技热点资讯 南山科技园互联网公司有哪些 湖南诚度互联网科技有限公司 受益于互联网科技的高速发展 互联网软件和科技 南平创想时代互联网科技有限公司 移动互联网年度科技创新 哈尔滨屹滨互联网科技有限公司 健康食品互联网创新科技园项目 迪庆互联网科技招生 佛山市拉法互联网科技有限公司 美国互联网科技公司 咖啡网 互联网科技公司税收优惠 互联网前沿科技 广西拼得多互联网科技有限公司 崇明区互联网教育科技诚信经营 深圳育鹏互联网科技有限公司招聘 广州富喜互联网络科技 中国新注册互联网科技 恒生科技互联网指数十大成分股 小牛互联网科技有限公司地址
0