android service

一、Service概念及用途:
Service 是 Android 系统中的一种组件,它和Activity 的级别差不多,但又Activity不同,它是不能与用户交互的,但可以和其他组件进行交互。它不能自己运行,只能后台运行。
如果我们退出应用时,Service进程并没有结束,它仍然在后台运行,那我们什么时候会用到Service呢?比如我们播放音乐的时候,有可能想边听音乐边干些其他事情,当我们退出播放音乐的应用,如果不用Service,我们就听不到歌了,所以这时候就得用到Service了,又比如当我们一个应用的数据是通过网络获取的,不同时间(一段时间)的数据是不同的这时候我们可以用Service在后台定时更新,而不用每打开应用的时候在去获取。

Service生命周期:
Android Service的生命周期并不像Activity那么复杂,它只继承了onCreate(),onStart(),onDestroy()三个方法,当我们第一次启动Service时,先后调用了onCreate(),onStart()这两个方法,当停止Service时,则执行onDestroy()方法,这里需要注意的是,如果Service已经启动了,当我们再次启动Service时,不会在执行onCreate()方法,而是直接执行onStart()方法,具体的可以看下面的实例。

Service与Activity通信:
Service后端的数据最终还是要呈现在前端Activity之上的,因为启动Service时,系统会重新开启一个新的进程,这就涉及到不同进程间通信的问题了(AIDL)这一节我不作过多描述,当我们想获取启动的Service实例时,我们可以用到bindService和onBindService方法,它们分别执行了Service中IBinder()和onUnbind()方法。

二、Service 启动方式:
一、context.startService();
二、context.bindService();

使用Service之前必须在androidMainfest.xml 中注册
调用流程:

第一种:
启动:context.startService() ---> onCreate() ---> onStartCommand()
销毁:ontext.stopService()   ---> onDestroy();

如果Service还没运行,则Android会先调用onCreate()方法,然后再调用onStartCommand();
如果Service已经运行了,则只调用onStartCommand(),所以一个Service的onStartCommand(),方法可能会调用多次。

第二种:
启动:context.bindService() ---> onCreate() --->onBind();
销毁:onUnibind() ---> onDestroy()
onBind() 将返回给客户端一个IBind接口实例,IBind允许客户端调用服务的方法,比如得到Service允许状态或者其他操作这个时候调用者(Context,例如Activity)会和Service绑定在一起,Context退出了,Service就会调用onUnibind() ---> onDesytoy()相应退出

这就是android service的简介

时间: 2024-09-19 18:56:08

android service的相关文章

Android Service生命周期及用法

上一节我讲解了Android Activity的生命周期,这一节我将讲解一下Service,首先我们要知道Service具体是干什么的,什么时候用到?以及它的生命周期等. Service概念及用途: Android中的服务,它与Activity不同,它是不能与用户交互的,不能自己启动的,运行在后台的程序,如果我们退出应用时,Service进程并没有结束,它仍然在后台运行,那我们什么时候会用到Service呢?比如我们播放音乐的时候,有可能想边听音乐边干些其他事情,当我们退出播放音乐的应用,如果不

Android Service服务(三) bindService与remoteService

一.bindService简介 bindService是绑定Service服务,执行service服务中的逻辑流程. service通过 Context.startService()方法开始,通过Context.stopService()方法停止:也可以通过Service.stopSelf()方法或者 Service.stopSelfResult()方法来停止自己.只要调用一次stopService()方法便可以停止服务,无论之前它被调用了多少次的 启动服务方法. 客户端建立一个与Service

Android Service服务(二) BroadcastReceiver

一. BroadcastReceiver简介 BroadcastReceiver,用于异步接收广播Intent,广播Intent是通过调用 Context.sendBroadcast()发送.BroadcastReceiver()接收. 广播Intent的发送是通过调用Context.sendBroadcast(). Context.sendOrderedBroadcast().Context.sendStickyBroadcast()来实现的.通常一个广播Intent可以被订阅了此Intent

Android Service中方法使用详细介绍

  Android Service中方法使用详细介绍 在Android中,Activity主要负责前台页面的展示,Service主要负责需要长期运行的任务.例如,一个从service播放音乐的音乐播放器,应被设置为前台运行,因为用户会明确地注意它的运行.在状态栏中的通知可能会显示当前的歌曲并且允许用户启动一个activity来与音乐播放器交互. Service的两种实现形式 1.非绑定 通过调用应用程序组件(例如Activity)的startService()方法来启动一个服务.一旦启动,服务就

mongodb-MongoDB可以作为android service使用吗?

问题描述 MongoDB可以作为android service使用吗? 请教各位大神,MongoDB可以作为android service使用吗?谢谢! 解决方案 mongodb是数据库,而且android上好像还没法安装mongodb吧?不过你可以把数据存到mongodb里面我个人觉得流程可以是这样: android -> Java Web (http) -> mongodb//或者android -> php(http) -> mongodb//还有其他语言也可以作为中间件使用

模拟器-关于android service的问题

问题描述 关于android service的问题 3C 在activity中使用startservice启动service,然后长按home键,清除后台该程序,但是service也被删掉了,在模拟器中不会被删掉,但是真机就被删掉了,请问为什么 解决方案 还是用真机调试比较好:可以写一个BrocastReceiver,在Service销毁回调事件中发送广播,广播接收器重新启动Service 解决方案二: 你真机中清理,会把一些相关的停止.模拟器中应该没有清理吧. 解决方案三: 如果需要实现ser

[Android]Service讲解

一. Service简介 Service是android 系统中的四大组件之一(Activity.Service.BroadcastReceiver.ContentProvider),它跟Activity的级别差不多,但不能自己运行只能后台运行,并且可以和其他组件进行交互.service可以在很多场合的应用中使用,比如播放多媒体的时候用户启动了其他Activity这个时候程序要在后台继续播放,比如检测SD卡上文件的变化,再或者在后台记录你地理信息位置的改变等等,总之服务总是藏在后台的. Serv

如何测试 Android Service 里的 Singleton (2)

本文讲的是如何测试 Android Service 里的 Singleton (2), 上一篇文章介绍了如何测试单例模式(PowerMock!),还有如何对 Android 代码做单元测试(Robolectric!).现在我们想要测试一个 Service 中的单例应该会很容易了吧? 第一次尝试: 结合 PowerMock 和 Robolectric (1) // src/PushService // [PushService.java] public class PushService exte

我的Android进阶之旅------>Android Service学习之AIDL, Parcelable和远程服务实例

通过上一篇(Android Service学习之AIDL, Parcelable和远程服务)的介绍,这一篇写一个小实例来实践一下 step1:建立两个应用,分别为RemoteService和RemoteServiceClient                                         先编写服务器端的内容 step2:开始编写一个StudentQuery.aidl文件      AIDL(Android Interface Definition Language),用来定

图标-android service停止问题

问题描述 android service停止问题 需求:发送一个广播,接受者收到广播后,需要停止对应的前台运行服务(带图标): 问题:现在就是当我在广播处理函数中调用context.stopService去停止服务时,确实停止了,但会发现状态栏,此图标会闪现一下(就是停止服务后,图标会先消失,然后过一小会又会出现,然后立刻消失),请问这是什么原因? 解决方案 http://blog.csdn.net/niu_gao/article/details/7331297 解决方案二: 一般正确的做法是,