(1)Service是Android系统中的四大组件之一,和Activity是同一层次的组件;它是一种生命周期较长,没有可视化界面,运行于后台的一种服务;例如,我们听音乐可以使用Service,下载东西可以使用Service,我们还可以用它来记录我们所在地理位置的改变,或者启动一个服务来一直监听某种动作;我们还可以使用Service更新Content Provider,发送Intent以及启动系统的通知等;

  

(2)Service生命周期不太复杂,它只继承了onCreate(),onStartCommand(),onDestroy()方法;它的启动方式有两种:

  Context.startService() ->onCreate()- >onStartCommand()->Service running--调用Context.stopService() ->onDestroy();

  Context.bindService()->onCreate()->onBind()->Service running--调用>onUnbind() -> onDestroy()

  需注意的是:原本的onStart()方法已经deprecated,已经被onStartCommand()替代,但onStartCommand()内部则是先调用了onStart();

  生命周期如图:

实例如下:

点击startServiceButton时:多点击几次;

点击stopServiceButton时;

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/LinearLayout01"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

     <Button
        android:id="@+id/startButton"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="startServiceButton"
        />
    <Button
        android:id="@+id/stopButton"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="stopServiceButton"
        />

</LinearLayout>

FirstService.java

package com.xiaozhang.androidservice;

import android.app.Service;
import android.content.Intent;
import android.os.IBinder;

public class FirstService extends Service {

    @Override
    public IBinder onBind(Intent intent) {
        System.out.println("Service onBind!");
        return null;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        System.out.println("Service onCreate();");
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        System.out.println("startId" + startId);
        System.out.println("Service onStartCommand()");
        return super.onStartCommand(intent, flags, startId);
    }

    @Override
    public void onDestroy() {
        System.out.println("Service onDestory()");
        super.onDestroy();
    }

}

MainActivity.java

package com.xiaozhang.androidservice;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity {

    private Button startButton = null;
    private Button stopButton = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        startButton = (Button) findViewById(R.id.startButton);
        stopButton = (Button) findViewById(R.id.stopButton);

        startButton.setOnClickListener(new StartServiceListener());
        stopButton.setOnClickListener(new StopServiceListener());

    }

    class StartServiceListener implements OnClickListener {

        @Override
        public void onClick(View v) {
            Intent intent = new Intent();
            intent.setClass(MainActivity.this, FirstService.class);
            startService(intent);
        }

    }

    class StopServiceListener implements OnClickListener {

        @Override
        public void onClick(View v) {
            Intent intent = new Intent();
            intent.setClass(MainActivity.this, FirstService.class);
            stopService(intent);
        }

    }

}

最后还需要把服务给注册到AndroidManifest.xml中:

 <service android:name=".FirstService"></service>

内容一部分转自:

http://www.cnblogs.com/zhangdongzi/archive/2012/01/08/2316711.html

推荐阅读:

http://blog.csdn.net/ithomer/article/details/7364024

android Service简介及启动关闭方式的更多相关文章

  1. android service两种启动方式

    android service的启动方式有以下两种: 1.Context.startService()方式启动,生命周期如下所示,启动时,startService->onCreate()-> ...

  2. Android service介绍和启动方式

    1.Android service的作用: service通常是用来处理一些耗时操作,或后台执行不提供用户交互界面的操作,例如:下载.播放音乐. 2.Android service的生命周期: ser ...

  3. Linux 平台MySQL启动关闭方式总结

    MySQL的启动方法有很多种,下面对比.总结这几种方法的一些差异和特性,下面实验的版本为MySQL 5.6.如有疏漏或不足,敬请指点一二.   1:使用mysqld启动.关闭MySQL服务 mysql ...

  4. Android Service 简介

    Service是Android系统中的一种组件,它跟Activity的级别差不多,但是它不能自己运行,只能后台运行,并且可以和其他组件进行交互.Service是没有界面的长生命周期的代码.Servic ...

  5. hadoop的两类配置文件及3种启动/关闭方式

    hadoop配置文件 默认配置文件:四个模块相对应的jar包中:$HADOOP_HOME/share/hadoop        *core-default.xml        *hdfs-defa ...

  6. Service 简介 启动方式 生命周期 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  7. Android Service总结03 之被启动的服务 -- Started Service

    Android Service总结03 之被启动的服务 -- Started Service 版本 版本说明 发布时间 发布人 V1.0 添加了Service的介绍和示例 2013-03-17 Sky ...

  8. Android菜鸟的成长笔记(16)——Service简介

    Service是Android四大组件之一 1.Service与Activity的区别在:Service一直在后台运行,没有用户界面. 2.选择Activity与Service的标准:如果某个程序组件 ...

  9. 启动/关闭oracle服务有三种方式

    启动oracle服务有三种方式: 1 从控制面板 2 使用MS-DOS命令 3 通过Oracle Administration Assistant for WindowsNT -通过控制面板启动ora ...

随机推荐

  1. 定义的返回按钮 Push到下一个页面后 手势返回无效解决办法

    转自:http://zhangmingwei.iteye.com/blog/2080457 从iOS7的Beta版开始,就着手做兼容工作,到Beta4的時候,应用已经基本兼容,只是偶然发现,iOS样式 ...

  2. 【C#基础】实现URL Unicode编码,编码、解码相关整理

    1.Unicode编码 引用系统 System.Web using System.Web; string postdata = "SAMLRequest=" + HttpUtili ...

  3. Android两种 旋转Bitmap方法

    方法1. 利用Bitmap.createBitmap Bitmap adjustPhotoRotation(Bitmap bm, final int orientationDegree) {      ...

  4. Qt的Graphics-View框架和OpenGL结合详解

    Qt的Graphics-View框架和OpenGL结合详解 演示程序下载地址:这里 程序源代码下载地址:这里 这是一篇纯技术文,介绍了这一个月来我抽时间研究的成果. Qt中有一个非常炫的例子:Boxe ...

  5. ubuntu安装python3.5

    ubuntu14.04系统会自带python2.7,请不要卸载它.不同版本的Python可以共存在一个系统上. 卸载之后,桌面系统会被影响. (1)sudo add-apt-repository pp ...

  6. C# 数学运算符

    运算符大致分为如下3类: 一元运算符,处理一个操作符 二元运算符,处理两个操作数 三元运算符,处理三个操作数 大多数运算符都是二元运算符,只有几个一元运算符和一个三元运算符,即条件运算符(条件运算符是 ...

  7. SICP 阅读笔记(二)

    Chapter 1: Building Abstractions with Procedures 2015-09-29 016 Preface of this chapter QUOTE: The a ...

  8. oracle数据库exp/imp命令详解

    转自http://wenku.baidu.com/link?url=uD_egkkh7JtUYJaRV8YM6K8CLBT6gPJS4UlSy5WKhz46D9bnychTPdgJGd7y6UxYtB ...

  9. Limited Edition for Visual Studio 2013 图文教程(教你如何打包.NET程序)

    原文:InstallShield Limited Edition for Visual Studio 2013 图文教程(教你如何打包.NET程序) InstallShield Limited Edi ...

  10. ImportError No module named memcache

    ImportError: No module named memcache 没有找到windows下的memcache,我们就用linux下的包来安装 先下载memcache linux下的安装包 f ...