【Android 初学】12、Service

1、Service的使用

  1. 定义一个类(例如 EchoService),继承Service (android.app.Service)
  2. 在AndroidManifest.xml当中注册该service,例如 <service android:name="EchoService"></service>
  3. 声明一个Intent:Intent serviceIntent = new Intent(Mainactivity,EchoService.class);
  4. 启动Service:startService(serviceIntent);
  5. 关闭Service:stopService(serviceIntent);

2、Service的生命周期

  1. 创建Service:onCreate()
  2. onStartCommand()
  3. onStart()
  4. 销毁Service:onDestroy()
  5. 服务创建之后,被销毁之前,只会调用第一次的onCreate。在服务运行期间,在次运行startService,将不会执行onCreate方法,而是执行onStartCommand()、onStart()这两个方法。

3、绑定服务

  1. 绑定:bindService(serviceIntent,this,Context.BIND_AUTO_CREATE);

    1. BIND_AUTO_CREATE:表示,如果要绑定的服务尚未开启,则自动创建该服务。
  2. 解除绑定:unbindService(this);

以上的方法中的参数this,指的是一个类实现了ServiceConnection接口,这里是MainAcitivty实现了。

并复写接口的方法public void onServiceConnected(ComponentName name, IBinder service)以及

public void onServiceDisconnected(ComponentName name)方法

3.    陈功绑定后会执行EchoService的onBind方法,使其返回一个Binder子类的实例。

4.    通过在 onServiceConnected中拿到的Binder实例对象,因为Binder是Service的内部类,可以调用到服务内的各种方法,于是Activity里面也可以进行各种操作。

备注:

如果是通过startService启动的服务,他是不会因为Activity的销毁而销毁,但是通过BindService启动的服务会因此销毁。

如果是通过startService启动的服务,只有通过stopService来销毁。不同通过UnbindService(这样会程序崩溃)

通过bindService启动服务,会自动执行startService方法。并且不能通过stopService停止,可以使用UnbindService停止

时间: 2024-11-07 15:29:34

【Android 初学】12、Service的相关文章

【玖哥乱弹】Android初学路上会遇到的瓶颈

对于大多数大三学生来说,这个暑假是人生最后一个暑假.对于IT专业的学生来说,开学后就要面对各大IT企业的秋招,很多人会成为从0开始的Android实习生.在Android初学之路上,每个Android实习生都会遇到各式各样的瓶颈. 克服瓶颈要从克服自己对一切瓶颈的偏见做起,把逃避瓶颈的行为变成享受瓶颈带来的乐趣的过程.要知道喜力比国产啤酒贵好多的一条重要原因就在于喜力的瓶颈:你现在去买一瓶玻璃瓶装喜力,用手握住瓶颈,大拇指按住那颗星,然后用你最熟悉的动作撸瓶颈,你会喜欢这种手感的. Androi

Android Studio实现Service AIDL

Android Studio实现Service AIDL [日期:2015-01-02] 来源:Linux社区  作者:teenyboy [字体:大 中 小] 今天要开发过程中要用到AIDL的调用,之前用的eclipse有大量教程,用起来很方便,现在刚换了Android studio,不可否认studio真的很强大,只是很多功能还需要摸索. AIDL(Android Interface Definition Language)是Android接口定义语言的意思,它可以用于让某个Service与多

Android 中的 Service 全面总结详解【下】

上一篇文章Android 中的 Service 全面总结详解[下] 介绍了Service的一些知识以及本地Service的使用,如果对Service还不太了解的建议先看下上篇文章:本文主要接着上一篇讲下远程服务的使用: 在说到远程服务的时候,我们需要先了解一些预备的知识: 首先来了解一下AIDL机制: AIDL的作用 由于每个应用程序都运行在自己的进程空间,并且可以从应用程序UI运行另一个服务进程,而且经常会在不同的进程间传递对象.在Android平台,一个进程通常不能访问另一个进程的内存空间,

Android:远程服务Service(含AIDL &amp; IPC讲解)

前言 Service作为Android四大组件之一,应用非常广泛 本文将介绍Service其中一种常见用法:远程Service 如果你对Service还未了解,建议先阅读我写的另外一篇文章: Android四大组件:Service史上最全面解析 目录 1. 远程服务与本地服务的区别 远程服务与本地服务最大的区别是:远程Service与调用者不在同一个进程里(即远程Service是运行在另外一个进程):而本地服务则是与调用者运行在同一个进程里 二者区别的详细区别如下图: 2. 使用场景 多个应用程

Android 双进程Service常驻后台,无惧“一键清理”

本文来自http://blog.csdn.net/hellogv/ ,引用必须注明出处! 最近项目用到Service常驻后台,研究了一下发现手Q和微信都是使用了双进程来保证一键清理后自动复活,copy网上双进程Service的例子,再结合onTrimMemory(),基本实现一键清理后自动复活. 使用双进程Service,关键是在AndroidManifest.xml里面定义Service时加入android:process=":service1": <service andro

【ANDROID 初学】控件--IMAGEVIEW的使用方法

Start Android 1.图片视图(ImageView)的基本概念 2.<InameView/>与ImageView 3.神奇的ScaleType属性 当图片大小与ImageView大小不匹配的时候,可以通过该属性来调整图片与ImageView控件的位置关系. android:scaleType:  android:scaleType是控制图片如何resized/moved来匹对ImageView的size. ImageView.ScaleType / android:scaleType

【Android 初学】Activity初步

1.Activity启动流程 Android操作系统 -->  读取配置文件AndroidMainfest.xml(得知启用哪个Activity)-->  生成MainActivity对象(名字可自定义) --> 调取该Activity的onCreate()方法 --> 在该方法会读取布局文件,决定该Activity显示界面 2.Activity与布局文件的关系 所谓的布局文件就是指示Activity显示的内容 3.在Activity当中获取代表控件的对象 每一个控件在Activi

Android平台调用Web Service:线程返回值

接上文 前文中的遗留问题 对于Java多线程的理解,我以前仅仅局限于实现Runnable接口或者继承Thread类,然后重写run()方法,最后start()调用就算完事,但是一旦涉及死锁以及对共享资源的访问和随时监控线程的状态和执行顺序和线程返回值等就不行了. Callable 和 Future 简介 Callable接口代表一段可以调用并返回结果的代码;Future接口表示是执行异步任务时的状态.返回值等信息.所以说Callable用于产生结果,Future用于获取结果. 1. Callab

Android IntentService vs Service

Android IntentService vs Service 众所周知,Android中的Service是用于后台服务的,当应用程序被挂到后台的时候,为了保证应用中某些功能仍然可以工作而引入了Service,比如播放音乐.针对service,官方文档有2点重要说明: 1. A Service is not a separate process. The Service object itself does not imply it is running in its own process;