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. configured to save RDB snapshots, but is currently not able to persist o...

    Redis问题 MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on d ...

  2. poj2584T-Shirt——网络最大流

    题目:http://poj.org/problem?id=2584 以人和衣服作为点,建立超级源点和超级汇点,人连边权为1的边,衣服对源点连边权为件数的边(别弄乱顺序): 试图写构造函数,但CE了,最 ...

  3. XmlSerialize error: There was an error generating the XML document.

    今天遇到一个很火的问题, 一个c#的class 序列化成xml后抛出异常, 信息为: XmlSerialize error: There was an error generating the XML ...

  4. 【转】有的共享软件赚了一百万美元,而为什么你没有?&&我的软件推广成功之路

    有的共享软件赚了一百万美元,而为什么你没有? 转自:http://blog.csdn.net/wangjiwei2010/article/details/1267044 译:DreamGoal 原作: ...

  5. AI-Info-Micron-Insight:Micron 美光的技术帮助 CERN 解开宇宙奥秘

    ylbtech-AI-Info-Micron-Insight:Micron 美光的技术帮助 CERN 解开宇宙奥秘 1.返回顶部 1. Micron 美光的技术帮助 CERN 解开宇宙奥秘 大约 14 ...

  6. H.264有四种画质级别

    H264相关知识-poseidonqiu-ChinaUnix博客 H.264有四种画质级别分别是BP.EP.MP.HP: 1.BP-Baseline Profile:基本画质.支持I/P 帧,只支持无 ...

  7. ubuntu下caffe配置

    http://blog.csdn.net/yhaolpz/article/details/71375762

  8. plsql&nbsp;分页

     select * from (select rownum rn,ps.* from (select * from user_t) ps ) where rn>=1 and rn<=10 ...

  9. Python之文件输入输出,

      文件输入与输出 • 打开文件返回文件对象 – file_object=open(file_name,access_mode='r') • 关闭文件对象 – file_object.close() ...

  10. ue4 c++ anim notify

    http://blog.csdn.net/or_7r_ccl/article/details/54564962 直接在sequence or montage中new个Event 然后在graph中接收 ...