android 中的Service

Service用处

耗时比较长的功能操作放在后台。(下载,MP3播放)

Service是一个应用程序组件

Service没有图形化界面

可以使用Service来更新ContentProvider,发送Intent以及启动系统的通知等等。

Service不是一个单独的进程,Service不是一个线程。

Service的生命周期

onCreat():当Service第一次被创建时,由系统调用。

onStartConmmand():是从Android2.0以后的版本开始使用,Service启动时会由系统自动调用。

onDestroy():当Service不再使用时由系统调用。

onStartCommand

Service的进程优先级

Service拥有较高的进程,一般在以下几种情况下都不会被kill掉。

1、如果Service正在调用onCreate、onStart或onDestroy方法,那么用于当前Service的进程则变为前台进程以避免被killed。

2、如果Service已经被启动,拥有它的进程仅次于可见的进程,而比不可见的进程重要,这就意味着Service一般不会被killed。

3、如果客户端已经连接到Service,那么拥有它的进程则拥有最高的优先级,可以认为该Service是可见的,不会被killed。

4、如果Service可以使用startForeground(int,Notification)方法来将Service设置为前台状态,那么系统就认为是对用户可见的,并不会在内存不足时将它killed。

一、onStartCommand有4种返回值:

START_STICKY:如果service进程被kill掉,保留service的状态为开始状态,但不保留递送的intent对象。随后系统会尝试重新创建service,由于服务状态为开始状态,所以创建服务后一定会调用onStartCommand(Intent,int,int)方法。如果在此期间没有任何启动命令被传递到service,那么参数Intent将为null。

START_NOT_STICKY:“非粘性的”。使用这个返回值时,如果在执行完onStartCommand后,服务被异常kill掉,系统不会自动重启该服务。

START_REDELIVER_INTENT:重传Intent。使用这个返回值时,如果在执行完onStartCommand后,服务被异常kill掉,系统会自动重启该服务,并将Intent的值传入。

START_STICKY_COMPATIBILITY:START_STICKY的兼容版本,但不保证服务被kill后一定能重启。

在Activity中绑定Service,让Activity能够提供相关信息的流程

Service类创建

1、继承Service

2、复写onBind方法,返回一个绑定的接口给Service。

3、声明一个内部类来继承Binder

4、在onBind中将继承Binder的类给实例化。再讲对象给返回。

在Manifest中注册:service

Activity中

绑定按钮

在OnClick方法中:

实例化Intent对象

通过Intent对象引用来设置页面跳转:intent.setClass(Context.this,class);

Service与Activity绑定:bindService(intent,conn,flags)

用匿名内部类声明一个ServiceConnection对象。里面有onServiceConnected和onServiceDisconnected

Activity与service的绑定,主要通过Binder对象来完成。serivic创建一个Binder,在Activity中获得binder,就能拿到binder中的方法。

Parcel对象

序列化:将对象转化成二进制的数据存起来。

Transact与onTransact

如果想要调用onTransact(int code,Parcel data,Parcel reply,int flags),就得先调用Transact(int code,Parcel
data,Parcel reply,int flags)。

code:是一个在FIRST_CALL_TRANSACTION和LAST_CALL_TRANSACTION之间的整数。

data:发往service的数据。

reply:返回给Activity的数据。

flags:通常写成0.

时间: 2024-12-17 01:54:23

android 中的Service的相关文章

(转载)Android中的Service:Binder,Messenger,AIDL(2)

前言 前面一篇博文介绍了关于Service的一些基本知识,包括service是什么,怎么创建一个service,创建了一个service之后如何启动它等等.在这一篇博文里有一些需要前一篇铺垫的东西,建议没有看过前一篇博文的同学先去看一下前一篇: Android中的Service:默默的奉献者 (1) . 但是在前一篇博文中也有一些遗漏的东西--主要是关于bindService()这一块的具体细节.由于这一块涉及的东西还是比较多,所以在这里单独提出来了.闲话不多说,进入正文. 1.bindServ

Android中保持Service的存活

这几天一直在准备考试,总算有个半天时间可以休息下,写写博客. 如何让Service keep alive是一个很常见的问题. 在APP开发过程中,需要Service持续提供服务的应用场景太多了,比如闹钟需要作出及时提醒,那么比如得有一个Service不断去比较当前时间和设置时间:QQ要能流畅的聊天,必然也需要及时接收消息等. 但是Android并没有保证Service有这样功能,毕竟一个系统面对的是用户,必然以对用户友好为先. 关于如何让Service keep alive,我在上篇博客给出的解

Android中的Service:Binder,Messenger,AIDL(2)

前言 前面一篇博文介绍了关于Service的一些基本知识,包括service是什么,怎么创建一个service,创建了一个service之后如何启动它等等.在这一篇博文里有一些需要前一篇铺垫的东西,建议没有看过前一篇博文的同学先去看一下前一篇: Android中的Service:默默的奉献者 (1) . 但是在前一篇博文中也有一些遗漏的东西--主要是关于bindService()这一块的具体细节.由于这一块涉及的东西还是比较多,所以在这里单独提出来了.闲话不多说,进入正文. 正文 1,bindS

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

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

(转)Android 中的 Service 全面总结

转自 http://www.cnblogs.com/newcj/archive/2011/05/30/2061370.html 1.Service的种类   按运行地点分类: 类别 区别  优点 缺点   应用 本地服务(Local) 该服务依附在主进程上,  服务依附在主进程上而不是独立的进程,这样在一定程度上节约了资源,另外Local服务因为是在同一进程因此不需要IPC,也不需要AIDL.相应bindService会方便很多.  主进程被Kill后,服务便会终止.  非常常见的应用如:HTC

Android 中的 Service 全面总结

原文地址:http://www.cnblogs.com/newcj/archive/2011/05/30/2061370.html 1.Service的种类 按运行地点分类: 类别 区别  优点 缺点   应用 本地服务(Local) 该服务依附在主进程上,  服务依附在主进程上而不是独立的进程,这样在一定程度上节约了资源,另外Local服务因为是在同一进程因此不需要IPC,也不需要AIDL.相应bindService会方便很多.  主进程被Kill后,服务便会终止.  非常常见的应用如:HTC

Android 中的 Service 全面总结 (转)

原文地址:http://www.cnblogs.com/newcj/archive/2011/05/30/2061370.html 1.Service的种类   按运行地点分类: 类别 区别  优点 缺点   应用 本地服务(Local) 该服务依附在主进程上,  服务依附在主进程上而不是独立的进程,这样在一定程度上节约了资源,另外Local服务因为是在同一进程因此不需要IPC,也不需要AIDL.相应bindService会方便很多.  主进程被Kill后,服务便会终止.  非常常见的应用如:H

Android中的Service与进程间通信(IPC)详解

Service 什么是Service 在后台长期运行的没有界面的组件.其他组件可以启动Service让他在后台运行,或者绑定Service与它进行交互,甚至实现进程间通信(IPC).例如,可以让服务在后台处理网络交互,播放音乐,文件I/O,或者与ContentProvider交互. 创建一个Service 新建一个类,继承Service,重写相关方法,如onBind,onUnBind,onCreate,onDestorey. 在AndroidManifest.xml中配置Service和相关权限

(五)认识Android中的Service

一.使用Service 1.右击java文件夹,选择新建Service,然后重写其中的onStartCommand函数,只要执行了startService函数,onStartCommand便会被执行 package com.example.shiyanshi.learnservice; import android.app.Service;import android.content.Intent;import android.os.Binder;import android.os.IBinde