Android四大组件之服务

介绍:

             服务(Service)是Android中的四大组件之一,它能够长期在后台运行且不提供用户界面。即使用户切到另一应用程序,服务仍可以在后台运行。例如,使用音乐播放器播放音乐,将音乐播放器切换到后台仍然可以播放音乐

服务的创建:

  • 服务的创建方式与创建Activity类似,只需要继承Service类,然后在清单文件中注册即可。创建服务的代码如下所示:

        public class MyService extends Service {

            public IBinder onBind(Intent arg0) { 

                return null;

            }

        }

  • 由于服务是Android四大组件之一,因此需要在清单文件中注册,具体代码如下所示:

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

        <manifest xmlns:android="http://schemas.android.com/apk/res/android"

            package="com.example.servicetest"

            android:versionCode="1"

            android:versionName="1.0" >

            …………  

            <application

                android:allowBackup="true" 

                android:icon="@drawable/ic_launcher"

                ………… >

                <!--在此注册服务信息-->

                <service android:name="cn.itcast.servicetest.MyService"/>

            </application>

        </manifest>

  • 至此,服务就创建成功了,需要注意的是,创建完服务之后,一定要在清单文件中注册,否则服务是不生效的。

服务的生命周期:

  • 与其他组件不同的是,Service不能自己主动运行,需要调用相应的方法来启动。启动服务的方法有两个,分别是Context.startService()和Context.bindService()。使用不同的方法启动服务,服务的生命周期也会不同,接下来介绍下服务的生命周期。 

1、startService方式开启服务的生命周期 

    服务会执行onCreate(), onStartCommand()方法,服务处于运行状态,直到自身调用stopSelf()方法或者其他组件调用stopService()方法时服务停止,最终被系统销毁。

    服务会长期的在后台运行,并且服务的状态与开启者的状态没有关系。

2、bindService方式开启服务的生命周期

    服务会执行onCreate(),onBind()方法,服务处于绑定状态, 客户端通过unbindService()方法关闭连接,解除绑定时,系统将直接销毁服务。   

    服务与开启者的状态有关,当调用者销毁了,服务也会被销毁。

 服务的启动方式

   启动服务有两种方式,分别是通过startService()方法和bindService()方法启动服务。接下来将针对这两种方式进行详细地讲解

1、start方式启动服务 

   首先学习下使用Context的startService()和stopService()方法来启动、关闭服务。使用startService()方式开启服务的具体代码如下所示:

    Intent intent = new Intent(this, StartService.class);

    Context.startService(intent); //开启服务 

    Context.stopService(intent);  //关闭服务

2、bind方式启动服务

    如果服务需要与调用者进行方法调用和数据交互时,应该使用bindService()和unbindService()启动、关闭服务。

    接下来通过一段示例代码来学习使用bindService()和unbindService()方法开启、关闭服务,具体代码如下所示:

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

private class MyConn implements ServiceConnection { 

public void onServiceConnected(ComponentName name, IBinder service) {

         MyBinder myBinder = (MyBinder) service;

 }

 public void onServiceDisconnected(ComponentName name) {

 }

}

MyConn myconn = new MyConn(); 

bindService(intent, myconn, BIND_AUTO_CREATE);

unbindService(myconn); 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值