Service与Activity的最大区别就是一有界面,一个没有界面。

如果某些程序操作很消耗时间,那么可以将这些程序定义在Service之中,这样就可以完成程序的后台运行,

其实Service就是一个没有界面的Activity,执行跨进程访问也可以使用Service完成。

Service是一个没有UI界面的操作组件,主要功能是为Activity程序提供一些必要的支持,例如:手机

中的Mp3播放软件,当回到桌面的时候这些组件依然在运行,这就属于Service的功能,Service也有

自己的生命周期方法。

Service的生命周期控制方法:

方法及常量

类型

描述

1

START_CONTINUATION_MASK

常量

解析执行Service

2

START_STICKY

常量

用于显示启动和停止Service

3

IBinder onBind(Intent intent)

普通

设置Activity和Service之间的绑定

4

onCreate()

普通

当一个Service创建时调用

5

onStartCommand(Intent intent,int flags,int startId)

普通

启动Service,由startService()方法触发

6

onDestroy()

普通

Service销毁时调用,由stopService()方法触发

Service基本组成

1、单击“启动Serivce”按钮得下图:

2、再单击“启动Serivce”按钮得下图:

3、单击“停止Serivce”按钮得下图:

如果不退出Service,按Home键回到桌面,再找到任务管理器,可以发现Service还在运行,

所以说Service是运行在后台的。

在main.xml中:

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

<LinearLayout

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

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:background="#000000"

android:gravity="center_horizontal">

<Button

android:id="@+id/start"

android:layout_margin="30dp"

android:layout_width="100dp"

android:layout_height="40dp"

android:background="#3399ff"

android:textColor="#ffffff"

android:text="启动Service" />

<Button

android:id="@+id/stop"

android:layout_margin="30dp"

android:layout_width="100dp"

android:layout_height="40dp"

android:background="#3399ff"

android:textColor="#ffffff"

android:text="停止Service" />

</LinearLayout>

在MyServiceDemo.java中:

package com.li.service;

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 MyServiceDemo extends Activity {

private Button start ;

private Button stop ;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

super.setContentView(R.layout.main);

this.start = (Button) super.findViewById(R.id.start) ;

this.stop = (Button) super.findViewById(R.id.stop) ;

this.start.setOnClickListener(new StartOnClickListenerImpl()) ;

this.stop.setOnClickListener(new StopOnClickListenerImpl()) ;

}

private class StartOnClickListenerImpl implements OnClickListener{

public void onClick(View v) {

MyServiceDemo.this.startService(new Intent(MyServiceDemo.this,MyServiceUtil.class)) ;

}

}

private class StopOnClickListenerImpl implements OnClickListener{

public void onClick(View v) {

MyServiceDemo.this.stopService(new Intent(MyServiceDemo.this,MyServiceUtil.class)) ;

}

}

}

在MyServiceUtil.java中:

package com.li.service;

import android.app.Service;

import android.content.Intent;

import android.os.IBinder;

public class MyServiceUtil extends Service {

@Override

public IBinder onBind(Intent intent) {

return null;  // 此处暂时不做任何的处理

}

@Override

public void onCreate() {

System.out.println("*** Service onCreate()") ;

}

@Override

public void onDestroy() {

System.out.println("*** Service onDestroy()") ;

}

@Override

public int onStartCommand(Intent intent, int flags, int startId) {

System.out.println("*** Service onStartCommand") ;

return Service.START_CONTINUATION_MASK; // 继续执行

}

}

修改AndroidManifest.xml:

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

package="com.li.service"

android:versionCode="1"

android:versionName="1.0" >

<uses-sdk

android:minSdkVersion="8"

android:targetSdkVersion="15" />

<application

android:icon="@drawable/ic_launcher"

android:label="@string/app_name"

android:theme="@style/AppTheme" >

<activity

android:name=".MyServiceDemo"

android:label="@string/title_activity_my_service_demo" >

<intent-filter>

<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />

</intent-filter>

</activity>

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

</application>

</manifest>

Service的基本组成相关推荐

  1. struts2 与 sping 整合 控制器中 service注入的问题

    以个人见解认为struts1 与spring整合的时候按照习惯,我们会把 action 控制器直接配置到sping中去: eg : 这里以使用元注解方式实现Service注入进行讲解: 控制器关键代码 ...

  2. java action dao_java中Action层、Service层和Dao层的功能区分

    一.Action/Service/DAO简介: Action是管理业务(Service)调度和管理跳转的. Service是管理具体的功能的. Action只负责管理,而Service负责实施. DA ...

  3. Android中Service生命周期、启动、绑定、混合使用

    一.Activity和Service如何绑定: 1.Service和Activity之间的连接可以用ServiceConnection来实现.实现一个ServiceConnection对象实例,重写o ...

  4. CentOS7下启动Nginx出现Failed to start nginx.service:unit not found

    错误的原因就是没有添加nginx服务,所以启动失败. 解决方法: 1.    在/root/etc/init.d/目录下新建文件,文件名为nginx 或者用命令在根目录下执行:# vim /etc/i ...

  5. CentOS7 service network start命令启动时报错解决方法

    service network start命令启动时报错: [root@localhost network-scripts]# service network start Starting netwo ...

  6. android Service 的使用

    1 Service 简介 Service 是Android 四大组件之一 一般在后台运行,无用户界面,用户无法看到. Service主要用于组件之间交互(例如:与Activity.ContentPro ...

  7. Web Service 安全性解决方案(SOAP篇)

    拼吾爱程序人生 » 软件编程 » Visual Studio.NET » Web Service » Web Service 安全性解决方案(SOAP篇) Web Service 安全性解决方案(SO ...

  8. Hibernate **关于hibernate4.3版本之后org.hibernate.service.ServiceRegistryBuilder被弃用**

    之前一直都是使用hibernate4.2.21的我,有一天突然没有使用本地的jar包而是让IDEA自动下载最新版本的hibernate5.2.2之后,发现有几个经常使用的方法报错了. //创建配置对象 ...

  9. [转]JAVA中Action层, Service层 ,modle层 和 Dao层的功能区分

    首先这是现在最基本的分层方式,结合了SSH架构.modle层就是对应的数据库表的实体类.Dao层是使用了Hibernate连接数据库.操作数据库(增删改查).Service层:引用对应的Dao数据库操 ...

  10. k8s nodeport无法访问_k8s学习之service详解

    1.概述 通过Deployment来创建一组Pod来提供具有高可用性的服务.每个Pod都会分配一个单独的Pod IP,却存在如下两问题: 1.pod ip仅仅集群内部可见的虚拟IP,外部无法访问 2. ...

最新文章

  1. mysql unix 安装教程_在UNIX系统下安装MySQL_MySQL
  2. oracle数据库if else,[数据库]oracle中if/else的3种写法
  3. Two Arrays And Swaps CodeForces - 1353B(贪心+分类)
  4. Qt工作笔记-简单的画图工具
  5. render注册一个链接组件_详解vue 动态加载并注册组件且通过 render动态创建该组件...
  6. linux python开发identifier,python程序设计 浙大版
  7. jsp中头的导入两种方式区别
  8. ubuntu20.04下开发海康威视网络摄像头sdk(二)云台基本控制(位姿控制)
  9. Tuxera NTFS for Mac(mac读写NTFS磁盘工具)
  10. 用TA学吉他,下个双11再也不孤单-吉他音阶实战 (三)
  11. php 有道翻译api,php有道翻译api调用方法实例
  12. js设计模式的讲解与应用 - 【单例模式】
  13. qemu: usb存储设备仿真
  14. Remote使用出现的问题及解决办法
  15. “降维打击”到底什么意思?
  16. mysql explain 类似_Oracle有没有类似MySQL中的explain功能
  17. 分享一个通过网络链接PDF转JPG的公用方法
  18. cmd 命令行 执行php文件
  19. 一些文学常识。。。。。。
  20. 3dsmax2014插件开发之环境搭建

热门文章

  1. Sep 26 09:22:41 ck01 kernel: Buffer I/O error on device sda2, logical block 2
  2. jQuery--AJAX传递xml
  3. Swift 中使用 SQLite——批量更新(事务处理)
  4. swift中delegate与block的反向传值
  5. java正则表达式获取指定两个字符串之间内容
  6. linux小脚本批量添加/删除用户
  7. 【JDBC 报错】Connections could not be acquired from the underlying database!
  8. char *a 和char a[] 的区别(指针和数组的区别)
  9. CCAH-CCA-500-4题:Where are Hadoop task log files stored?
  10. qq图片选择效果的处理