Android Service 的介绍与基本使用

作为Android 的四大组件之一的Service 相信你并不陌生,Service主要用于后台服务,或者去执行一些比较耗时的服务,比如说下载文件时,看着下载文件的进度一点一点的增长,相信是个人都觉得非常无聊,像用手机做点其他东西 但是没有Service的话 下载就会断开,所以这个时候Service 就起了很大的作用了,当我们的程序开启了Service后 在我们不手动结束应用的情况下,我们可以在运行一些任务时,还可以做一些其他的事情这就是Service的强大了。。。

下面我们来看一下怎样去启动一个Service

首先Service 是一个类 这个类 继承与Service 并且这个类 还要重写onCreate(),onStartCommand(),onDestroy(),这三个方法,并且需要在Androidmanifest 文件中写上

 <service
            android:name=".MyService"
            android:enabled="true"
            android:exported="true"></service>

下面是Service 类

public class MyService extends Service {
    public MyService() {
    }

    @Override
    public IBinder onBind(Intent intent) {
        // TODO: Return the communication channel to the service.
        return new Binder();
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        System.out.println("服务已启动");
        return super.onStartCommand(intent, flags, startId);
    }

    @Override
    public void onCreate() {

        super.onCreate();

        System.out.println("服务启动成功");
    }

    @Override
    public void onDestroy() {
        super.onDestroy();

        System.out.println("已销毁服务");
    }
}

在启动这个名为MyService 的类后 首先会启动onCreate() 这个函数 然后会启动onStartCommand()函数 在我们关闭服务时 就会只启动onDestroy函数

这就是Service的基本周期了

接下来 我们来看一下如何在去启动这个Service

这里我就不写绑定控件的地方了

    btn_StartService.setOnClickListener(this);//开启Service
        btn_StopService.setOnClickListener(this);//关闭Service
        btn_BindService.setOnClickListener(this);//绑定控件 
        btn_UnBindService.setOnClickListener(this);//接触绑定控件

这里给控件添加一个this的监听然后我们在 这个时候 activity 类里面就必须要实现implements View.OnClickListener, ServiceConnection 接口 然后重写onClik函数

/*

*要启动Service  必须要用一个Intent 这里停止 和开始 绑定 解除绑定都是一个Intent  所以我们只需要定义一个Intent
*/
  public void onClick(View v) {
        Intent intent = new Intent(MainActivity.this,MyService.class);//定义一个Intent 
        switch (v.getId())
        {
            case R.id.btn_StartService :
                startService(intent);//启动服务
                break;
            case R.id.btn_StopService :
                stopService(intent);//关闭服务
                break;
            case R.id.btn_BindServic:
                bindService(intent,this,Context.BIND_AUTO_CREATE);//绑定服务,传入一个Intent 和传入一个常量,在传入this是需要重写onServiceConnected   

onServiceDisconnected  这两个方法
                break;
            case R.id.btn_UnBindService:

                unbindService(this);//解除绑定
                break;

        }
    }
   public void onServiceConnected(ComponentName name, IBinder service) {

        System.out.println("绑定成功");//在绑定Service后会在onCreate  onStartCommand函数启动  后启动这个函数  
    }

    @Override
    public void onServiceDisconnected(ComponentName name) {

    }

好了 当写好 我们执行的时候 我们首先点击 开始服务的按钮 这个时候就会 写执行onCreate 函数 然后再执行onStartCommand 函数 当启动Service 后再去点击启动服务 只会执行onStartCommand 函数 这个时候我们可以查看手机执行的程序 这个时候你就会发现你的程序虽然推出了 但是还是在手机的执行任务中 为了更加的形象 我们在onCreate 中写一个匿名线程


private boolean Service=flas;//默认情况下我们线程中的输入语句是进不去的
  public void onCreate() {

        super.onCreate();

        ServiceRun =true;//当我们点击打开服务时  首先就会启动这个函数  这个时候 这个布尔值 已经成为了true  可以运行线程中的输出语句了

        new Thread(){
            @Override
            public void run() {
                super.run();

                while(ServiceRun)
                {
                    System.out.println("服务运行中");
                    try {
                        sleep(1000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        }.start();


        System.out.println("服务启动成功");
    }

当我们点击关闭服务的时候 就会执行onDestroy 函数 这个时候我们在这个函数执行ServiceRun =false;
就可以关闭这个线程了
并且可以销毁这个服务了

并且 绑定Service 和解除绑定 这两个按钮 我没有多说 是因为这个两个功能和开始 和关闭Service 功能差不多

重写学习了Service 感觉收获还是蛮大的 =-=

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值