关闭

Android Service 的介绍与基本使用

标签: android手机应用
1142人阅读 评论(3) 收藏 举报
分类:

作为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
查看评论

安卓入门--四大组件--Service基本用法

Service是什么 Service(服务)是一个没有用户界面的在后台运行执行耗时操作的应用组件。其他应用组件能够启动Service,并且当用户切换到另外的应用场景,Service将持续在后台运行。另外,一个组件能够绑定到一个service与之交互(IPC机制),例如,一个service可能会处...
  • lw_zhaoritian
  • lw_zhaoritian
  • 2016-09-09 16:48
  • 740

android中Service使用详解

service用于长期在后台处理任务,而不需要对用户可见。 service有2种基本的启动方式: startService():使用这种方式,来进行单一的任务,不需要返回结果给调用者 bindService():与上面的相反。 下面是一些关于服务的重要说明,非常值得详细了解的: 继承serv...
  • baidu_26994091
  • baidu_26994091
  • 2016-06-29 01:51
  • 12294

android服务和广播的结合使用demo

package com.example.yqqmobilesafe.service; import java.util.List; import android.app.Notification; import android.app.NotificationManager; import an...
  • u014600432
  • u014600432
  • 2014-11-24 10:22
  • 1532

关于Eclipse的基本使用方法

安装JDK1.6具体安装方法如下:1)安装JDK直接双击“jdk-6u10-beta-windows-i586-p.exe”文件,出现许可证协议窗体。单击【接受】按钮,出现自定义安装窗体。单击【下一步】按钮,即可安装。在安装期间,需要指定JRE的目标文件夹,默认值为:C:/Program Files...
  • leeshuqing
  • leeshuqing
  • 2009-02-16 06:44
  • 10214

Android Camera使用指南

要自己写一个相机应用直接使用相机硬件,首先应用需要一个权限设置,在AndroidManifest.xml中加上使用设备相机的权限: 为你的应用创建自定义的相机,一般步骤如下:   1.检测相机硬件并获取访问   2.建立一个Preview类:需要一个相机预览的类,继承...
  • u010107250
  • u010107250
  • 2015-03-29 15:44
  • 930

Android项目之广播(BroacastReceiver)与服务(Service)

前言: 在我写博客前再声明一下,我希望经过我同意装载我文章的某某某记得注明:(本文来自http://blog.csdn.net/qq_29269233),要尊重我的劳动成果,这样才能给我更多的支持和鼓励!今天我就接着上一篇博客:《Android项目之webview简单使用》,在上一篇博客的基础上添加...
  • qq_29269233
  • qq_29269233
  • 2016-11-20 14:06
  • 913

Android — Activity与Service交互之Binder总结

最近在复习Android跨进程调用,整理了一下自己对Binder的一些理解。 为了加深理解,希望看完后能自己操练验证一下,要不真的很容易眼高手低哦~ 主要介绍了Activity与Service之间调用方法,便于更好的理解与以后的开发~
  • yk3372
  • yk3372
  • 2016-11-23 00:51
  • 514

Android~Service+BroadcastReceiver使用

Android~Service+BroadcastReceiver使用
  • Bluechalk
  • Bluechalk
  • 2016-06-02 00:08
  • 1970

Android管理服务(Service)的生命周期(lifecycle)

服务(Service)的生命周期要比Activity简单的多。尽管如此,由于服务会在用户不知情的情况下运行在后台,你也要严密监视你的服务是如何创建和销毁的。 服务的生命周期(从创建到销毁)有两条路径: 被启动的服务(started service) 当服务被一个组件通过star...
  • oracleot
  • oracleot
  • 2014-01-27 19:17
  • 8531

Android Studio 介绍

写在前面 谷歌称,Android Studio将会让开发者“更快、更具生产力”,是扩展开发平台Eclipse的替代平台。Android Studio的开发源自集成开发环境IntelliJ IDEA,按照谷歌的预想,这就意味着它是一套全功能开发环境。 谷歌打算将云消息以及其它服务整合到And...
  • supersugar3126
  • supersugar3126
  • 2013-10-30 16:24
  • 3338
    个人资料
    • 访问:112180次
    • 积分:1387
    • 等级:
    • 排名:千里之外
    • 原创:41篇
    • 转载:3篇
    • 译文:0篇
    • 评论:32条
    博客专栏
    最新评论