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. IE botton 点击文字下沉

    IE点击文字下沉这个应该是浏览器自带的,只要是用button标签应该都是避免不了的. 如果实在接受不了的话,用一个元素比如div.p等块级元素或者是i.b.s.u.span等行内元素.用样式去模拟bu ...

  2. VirtualBox下安装MacOS11

    8.键盘选中 “简体中文” -- > "拼音模式".VirtualBox安装Mac OS 10.11 ,安装日期:2016 / 5 / 14 用虚拟机装黑苹果本人也装了不下3 ...

  3. IOS深入学习

    iOS超全开源框架.项目和学习资料汇总(1)UI篇 iOS超全开源框架.项目和学习资料汇总(2)动画篇 iOS超全开源框架.项目和学习资料汇总(3)网络和Model篇 数据库 FMDB – sqlit ...

  4. python的paramiko模块的安装与使用

    一:简介 paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接. 由于使用的是python这样的能够跨平台运行的语言,所以所有python支 ...

  5. angular学习的一些Mark

    http://www.cnblogs.com/xianrongbin/p/4104596.html http://angular-ui.github.io/

  6. synchronized用法详解

    1.介绍 Java语言的关键字,可用来给对象和方法或者代码块加锁,当它锁定一个方法或者一个代码块的时候,同一时刻最多只有一个线程执行这段代码.当两个并发线程访问同一个对象object中的这个加锁同步代 ...

  7. 转载ASP.NET MVC中Session的处理机制

    本文章转载自 http://www.cnblogs.com/darrenji/p/3951065.html ASP.NET MVC中的Session以及处理方式   最近在ASP.NET MVC项目中 ...

  8. 解决 Ajax 发送 post 请求出现 403 Forbidden 的三种方式

    众所周知前端向后台发送 post 请求时,必须验证 csrf,否则会报错 403 Forbidden.使用 Django Form 表单可以直接在表单里面添加 {% csrf_token %} 即可, ...

  9. 函数PARSENAME使用和截取字符串

    MS SQL server有一个函数PARSENAME ( 'object_name' , object_piece ). 函数有2个参数: Object_name 检索的对象名称.即是:服务器名.数 ...

  10. ugui获取text宽

    http://www.xuanyusong.com/archives/3587 void Start () { Font font = Resources.Load<Font>(" ...