Android应用程序中有一项非常重要的技术--Service,它没有运行界面,运行在后台,但是有一点非常重要,Service并不是一个单独的进程,同时也不是一个线程,用来处理耗时的动作。

Service有两种使用方法,一种是start和stop,另一种是绑定服务。

当使用的是第一种方法时,直到用户停止这个服务,Service才会停止,即使是用户关闭这个Activity(应用程序),Service也一样会在后台运行。

当用户使用的是第二种方法时,一旦用户解除绑定或者停止了这个Activity(应用程序),Service也自动停止了,即它是随着Activity的生命周期运行的。

下面的截图是对Service的测试画面:

一下是程序的源代码:

public class A_Service01 extends Activity {private Button button1;private Button button2;private Button button3;private Button button4;private MyService myService;private ServiceConnection serviceConnection=new ServiceConnection() {@Overridepublic void onServiceDisconnected(ComponentName name) {// TODO Auto-generated method stubmyService=null;Toast.makeText(A_Service01.this, "Service Failed", Toast.LENGTH_SHORT).show();}@Overridepublic void onServiceConnected(ComponentName name, IBinder service) {// TODO Auto-generated method stub//myService=((MyService.MyBinder)service).getService();Toast.makeText(A_Service01.this, "Service Connected", Toast.LENGTH_SHORT).show();}};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_a__service01);button1=(Button)findViewById(R.id.button1);button2=(Button)findViewById(R.id.button2);button3=(Button)findViewById(R.id.button3);button4=(Button)findViewById(R.id.button4);button1.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubfinal Intent intent=new Intent(A_Service01.this,MyService.class);startService(intent);}});button2.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubfinal Intent intent=new Intent(A_Service01.this,MyService.class);stopService(intent);}});button3.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubfinal Intent intent=new Intent(A_Service01.this, MyService.class);bindService(intent, serviceConnection, Context.BIND_AUTO_CREATE);}});button4.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubunbindService(serviceConnection);   }});}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.activity_a__service01, menu);return true;}}
public class MyService extends Service {/** 出现这句话的原因是下面重载的onBind方法需要一个返回值*/private MyBinder myBinder=new MyBinder();@Overridepublic IBinder onBind(Intent arg0) {// TODO Auto-generated method stubLog.d("MyService", "Myservice onBind");return myBinder;}@Overridepublic void onRebind(Intent intent) {// TODO Auto-generated method stubsuper.onRebind(intent);Log.d("MyService", "Myservice onRebind");}@Overridepublic boolean onUnbind(Intent intent) {// TODO Auto-generated method stubLog.d("MyService", "Myservice onUnbind");return super.onUnbind(intent);}@Overridepublic void onCreate() {// TODO Auto-generated method stubsuper.onCreate();Log.d("MyService", "Myservice onCreate");}@Overridepublic int onStartCommand(Intent intent, int flags, int startId) {// TODO Auto-generated method stubLog.d("MyService", "flags---->"+flags);Log.d("MyService", "startId---->"+startId);Log.d("MyService", "Myservice onStartCommand");return super.onStartCommand(intent, flags, startId);}@Overridepublic void onDestroy() {// TODO Auto-generated method stubsuper.onDestroy();Log.d("MyService", "Myservice onDestory");}public class MyBinder extends Binder{MyService getService(){return MyService.this;}}}

Android开发--Service开启,关闭,绑定,解除相关推荐

  1. Android开发Service之BindService

    前言 一直使用 Qt 来进行桌面端和移动端开发,对 Android 开发并不熟悉,但是项目中往往又经常会用到 Android 原生开发的东西.本次收集了一些关于BindService相关的知识供自己学 ...

  2. Android开发--Service和Activity通过广播传递消息

    Android的Service也运行在主线程,但是在服务里面是没法直接调用更改UI,如果需要服务传递消息给Activity,通过广播是其中的一种方法: 一.在服务里面发送广播 通过intent传送数据 ...

  3. Android开发下拉关闭图片

    图片会跟随手指移动,只有是下滑时才会退出查看页面,其他情况会复位,直接当做ImageView使用即可,setViewCall方法是在下滑完成后要执行的操作,上,左,右,可自行扩展 onTouchEve ...

  4. Android开发之如何保证Service不被杀掉(broadcast+system/app)

    Android开发之如何保证Service不被杀掉(broadcast+system/app) 序言 最近项目要实现这样一个效果:运行后,要有一个service始终保持在后台运行,不管用户作出什么操作 ...

  5. Android开发之如何保证Service不被杀掉(前台服务)

    序言 最近项目要实现这样一个效果:运行后,要有一个service始终保持在后台运行,不管用户作出什么操作,都要保证service不被kill.参考了现今各种定制版的系统和安全厂商牛虻软件,如何能保证自 ...

  6. android服务开启线程,android之service与intentService的不同

    不知道大家有没有和我一样,以前做项目或者练习的时候一直都是用Service来处理后台耗时操作,却很少注意到还有个IntentService,前段时间准备面试的时候看到了一篇关于IntentServic ...

  7. 正确姿势临时和永久开启关闭Android的SELinux

          正确姿势临时和永久关闭Android的SELinux Android SELinux开发多场景实战指南目录: Android SELinux开发入门指南之SELinux基础知识 Andro ...

  8. android 47 service绑定

    如果一个service已经启动了,activity和service绑定了在解除邦定,则这个service不会销毁,因为这个service不是这个Activity创建的. service生命周期: Ac ...

  9. Android(java)学习笔记171:服务(service)之绑定服务调用服务里面的方法

    1.绑定服务调用服务里面的方法,图解: 步骤: (1)在Activity代码里面绑定 bindService(),以bind的方式开启服务 :                     bindServ ...

最新文章

  1. 错误:无法作为数据库主体执行,因为主体 dbo 不存在、无法模拟这种类型的主体,或您没有所需的权限...
  2. 使用IBMMQ时的那些事
  3. win8/Metro开发系列二 Xaml数据绑定
  4. UA MATH571B 试验设计 QE练习题1
  5. 熵值法计算权重有异常值_指标权重确定方法 1-熵值法
  6. 语句作用_3分钟短文:Laravel模型作用域,为你“节省”更多代码
  7. 容器赋能AI-人工智能在360私有云容器服务上的实践
  8. ExtJs六(ExtJs Mvc首页展示)
  9. 【JavaScript】一个同步于本地时间的动态时间
  10. 算法笔记_031:计算中值和选择问题(Java)
  11. [转载] windows下Python2.7 的 pyOpenGL模块安装
  12. 学习 灰色2017.12.08
  13. 预备篇:一.元器件选型及飞控电路设计
  14. 多个源文件进行编译,即 makefile 的编写
  15. MAX3485芯片资料整理
  16. springboot+基于微信小程序的心理测评与活动管理的设计与实现 毕业设计-附源码191752
  17. Codeforcs 1183B Equalize Prices
  18. BERT的优秀变体:ALBERT论文图解介绍
  19. 如何求地球上两点之间的最短距离_初中数学求线段之和最小的问题,知识点题型汇总...
  20. mysql碎片整理innodb_Innodb表碎片整理

热门文章

  1. iOS开展——全球应对MotionEvent
  2. oracle性能调优学习0622
  3. 解决哈希(HASH)冲突的主要方法
  4. Leap Motion+第六感或引发人机交互革命
  5. GlusterFS配置管理(五)
  6. ASP.NET常用的26个优化性能方法
  7. InfoPath Forms Services的配置
  8. 我的ubuntu8.04安装经验 (转)
  9. 《ANTLR 4权威指南》——2.1节从ANTLR元语言开始
  10. spring对session和事务的管理以及OpenSessionInViewFilter是如何工作