Service跟Windows系统里的服务概念差不多,都在后台执行,它跟Activity的最大区别就是,它是无界面的

开发Service与开发Activity的步骤类似

1.定义一个继承Service的子类

2.在AndroidManifest.xml文件中配置该Service

Service与Activity还有一点相似之处,它们都是从Context派生出来的,因此它们都可调用Context里定义的如getResources(),getContentResolver()等方法

下面写一个简单的Service例子

先定义一个Service类

  1. package WangLi.IO.FirstService;
  2. import android.app.Service;
  3. import android.content.Intent;
  4. import android.os.IBinder;
  5. public class FirstService extends Service {
  6. //必须实现的方法
  7. @Override
  8. public IBinder onBind(Intent intent) {
  9. // TODO Auto-generated method stub
  10. return null;
  11. }
  12. //Service被创建时回调方法
  13. public void OnCreate()
  14. {
  15. super.onCreate();
  16. System.out.print("Service is Created");
  17. }
  18. //Service启动时回调该方法
  19. public int onStartCommand(Intent intent,int flags,int startId)
  20. {
  21. System.out.println("Service is Started");
  22. return START_STICKY;
  23. }
  24. //Service被关闭之前被回调
  25. public void onDestroy()
  26. {
  27. super.onDestroy();
  28. System.out.println("Service is Destroyed");
  29. }
  30. }

上面几个关键方法都可以看到,Service的执行就在方法内写上相应的功能代码,在不同阶段执行

Service跟Activity一样,也需要在AndroidManifest.xml文件中注册,注册配置配置<intent-filter.../>子元素,设置Service可被哪些Intent启动

  1. <service android:name="FirstService" >
  2. <intent-filter>
  3. <action android:name="WangLi.IO.First_Service"></action>//注意小必须要注册!!!!
  4. </intent-filter>
  5. </service>

建一个界面类Activity,放上两个按钮,一个用来启动Service,一个用来停止Service

  1. package WangLi.IO.FirstService;
  2. import android.app.Activity;
  3. import android.content.Intent;
  4. import android.os.Bundle;
  5. import android.view.View;
  6. import android.view.View.OnClickListener;
  7. import android.widget.Button;
  8. public class MainActivity extends Activity {
  9. Button start, stop;
  10. @Override
  11. public void onCreate(Bundle savedInstanceState) {
  12. super.onCreate(savedInstanceState);
  13. setContentView(R.layout.main);
  14. // 获取界面上的start,stop两个按钮
  15. start = (Button) findViewById(R.id.start);
  16. stop = (Button) findViewById(R.id.stop);
  17. // 创建启动Service的Intent
  18. final Intent intent = new Intent();
  19. // 为Intent设置Action属性
  20. intent.setAction("WangLi.IO.First_Service");
  21. start.setOnClickListener(new OnClickListener() {
  22. @Override
  23. public void onClick(View arg0) {
  24. // 启动指定Service
  25. startService(intent);
  26. }
  27. });
  28. stop.setOnClickListener(new OnClickListener() {
  29. @Override
  30. public void onClick(View v) {
  31. // 停止指定Service
  32. stopService(intent);
  33. }
  34. });
  35. }
  36. }

注意startService,和stopService这两个方法

下面是程序界面

下面logcat记录的Service启动和关闭过程

此外,有一点值得注意,多次启动一个已有的Service组件将不会再调用onCreate方法,但每次启动时都会回调onStart方法

注意:bindservice和startservice的启动对应的方法!

初学Android,创建,启动,停止Service(五十八)的更多相关文章

  1. Andriod的国际化-android学习之旅(五十八)

    android资源国际化

  2. Android简易实战教程--第五十话《动画扫描》

    祝新年快乐!2017(一起)前行. 转载博客请注明出处:道龙的博客 本篇简答的小案例,使用动画知识,完成一个类似雷达扫描效果,并且加入自定义进度条.对于自定义进度条前面有很详细的解析和案例了,本篇就结 ...

  3. Android创建启动画面[转]

    每个Android应用启动之后都会出现一个Splash启动界面,显示产品的LOGO.公司的LOGO或者开发者信息.如果应用程序启动时间比较长,那么启动界面就是一个很好的东西,可以让用户耐心等待这段枯燥 ...

  4. Android创建启动画面

    每一个Android应用启动之后都会出现一个Splash启动界面,显示产品的LOGO.公司的LOGO或者开发人员信息.假设应用程序启动时间比較长,那么启动界面就是一个非常好的东西,能够让用户耐心等待这 ...

  5. 【OF框架】使用OF.WinService项目,添加定时服务,进行创建启动停止删除服务操作

    准备 使用框架搭建完成项目,包含OF.WinService项目. 了解Window Service 和定时服务相关知识. 一.添加一个定时服务 第一步:了解项目结构 第二步:创建一个新的Job 第三步 ...

  6. Android笔记(五十八)Android总结:四大组件——Activity篇

    什么是Activity Activity是一种包含用户界面的组件,主要用于和用户进行交互,一个APP通常由多个Activity组成. 每个Activity都对应一个布局文件,通过setContentV ...

  7. 从头学起android&lt;AudioManager 声音编辑器.五十.&gt;

    我们用android经常使用的时候,手机的声音增大和缩小操作.在设定场景模式,它往往使用静音和振动运行,这通常是AudioManager来控制的. 今天我们就来看一下AudioManager 的使用. ...

  8. Android简易实战教程--第五十一话《使用Handler实现增加、减少、暂停计数》

    转载博客请注明出处:道龙的博客 之前,写过一篇使用异步任务AysncTask实现倒计时的小案例,喜欢的话可以参考博客:Android简易实战教程--第三十三话< AsyncTask异步倒计时&g ...

  9. Android的资源类型和存储方式简介-android学习之旅(五十二)

    android资源的类型 android资源的存储方式

随机推荐

  1. ACM学习历程—HDU4956 Poor Hanamichi(模拟)

    Poor Hanamichi Problem Description Hanamichi is taking part in a programming contest, and he is assi ...

  2. Ubuntu——跟新flash

    使用命令: apt-get install adobe-flashplugin 即可

  3. 【转】Pro Android学习笔记(五):了解Content Provider(上)

    Content Provider是抽象数据封装和数据访问机制,例如SQLite是Android设备带有的数据源,可以封装到一个content provider中.要通过content provider ...

  4. cassandra自启动服务器脚本

    新建一个文件. vi /etc/rc.d/init.d/vi cassandra2 #!/bin/sh # chkconfig: # description: service -- # process ...

  5. Linux中的nc测试端口是否开放

    nc测试端口是否开放 在Linux中有一个级强大的网络工具netcat,在默认情况下面都是没有安装的,现在介绍一下安装过程 其实安装很简单 一.安装使用 1.只需输入命令yum安装: [root@SZ ...

  6. ScrollView cannot scroll in Slidinguppanellayout 解决办法

    xml源码如下 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:an ...

  7. jquery中对于批量deferred的处理

    此代码仿照jquery源码中$.when()的实现 function test(i) { var dfd = $.Deferred(); if(i%2 == 0) { console.log(&quo ...

  8. day12Session案例 JSP

    2 Session案例 用户登录场景 package gz.itcast; import java.io.IOException; import java.io.PrintWriter; import ...

  9. 12. nc/netcat 用法举例

    nc命令用法举例 什么是nc nc是netcat的简写,有着网络界的瑞士军刀美誉.因为它短小精悍.功能实用,被设计为一个简单.可靠的网络工具 nc的作用 (1)实现任意TCP/UDP端口的侦听,nc可 ...

  10. qsc52(三角形线性插值)

    题目链接:http://qscoj.cn/problem/52/ 题意:中文题诶- 思路:水题,只要知道三角形插值和判断点在三角形内就OK了 关于三角形插值:http://www.cnblogs.co ...