Service的生命周期要比activity简单的多,它只有三个阶段(创建服务、开始服务、销毁服务)。下面通过具体事例讲解android的service组件。...1.创建android工程 在Eclipse中创建android工程 android_service_one 2.创建Service 在android工程中,创建包com.example.service...Log.d("MyService", "onStart"); super.onStart(intent, startId); } } 3.调用服务 在android 活动组件中调用刚刚建立的服务...通过来配置服务组件。...1 服务配置完成以后,
1.简介与定义 简介 Service是一个可以在后台执行长时间运行操作而不提供用户界面的应用组件。Service可由其他应用组件启动,而且即使用户切换到其他应用,Service仍将在后台继续运行。...此外,组件可以绑定到Service,以与之进行交互,甚至是执行进程间通信 (IPC)。...通过调用startService() 方法启动Service:当其他组件调用startService()方法时,Service被创建,并且无限期运行,其自身必须调用stopSelf()方法或者其他组件调用...()方法取消与该Service的绑定时,也只是切断该Activity与Service之间的关联,并不能停止该Service组件。...要停止该Service组件,还需调用stopService()方法。
Android四大组件之Service 服务的两种开启方式: startService();开启服务....Service: A Service is not a separate process....A Service is not a thread....所以在Service中进行耗时的操作时必须要新开一个线程。...至于为什么要使用Service而不是Thread,这个主要的区别就是生命周期不同,Service是Android系统的一个组件,Android系统会尽量保持Service的长期后台运行, 即使内存不足杀死了该服务
一、Service简介 Service是Android程序中四大基础组件之一,它和Activity一样都是Context的子类,只不过它没有UI界面,是在后台运行的组件。...Service默认并不会运行在子线程中,它也不运行在一个独立的进程中,它同样执行在UI线程中,因此,不要在Service中执行耗时的操作,除非你在Service中创建了子线程来完成耗时操作。...二、Service生命周期 ?...bindService / unbindService 生命周期顺序:onCreate- onBind- onUnBind- onDestroy 同样首先是OnCreate(),接着是 OnBind() 当组件调用...OnUnbind() 当前组件调用unbindService(),想要解除与service的绑定时系统调用此方法(一次调用,一旦解除绑定后,下次再调用unbindService()会抛出异常)。
Service是能够在后台长期运行并且不提供用户界面的应用程序组件。...Service可以分为以下两种类型: Started(启动):当Activity通过startService()方法启动服务时,服务处于started状态。一旦启动,就算组件被销毁也不会停止。...只有自身调用stopSelf()或者其他组件调用stopService()才停止 Bound(绑定):当Activity通过bindService()方法启动服务时,服务处于bound状态。...一个Service可以被多个服务绑定,当它们都解绑时,服务被销毁 Service类中的重要方法 onStartCommand():当组件调用startService()时,系统调用该方法。...如果开发人员实现该方法,需要调用stopSelf()或stopService()来停止服务 onBind():当组件调用bindService()时,系统调用该方法。
bindService需要三个参数: 参数1: Intent不用多说 参数2:该参数是一个ServiceConnection的对象,该对象用于监听访问者和Service之间的连接情况。...OnServiceConnected是当调用者与服务连接成功后调用,注意的是OnserviceDisconnected不是调用者与服务断开时后调用,而是由于某种原因异常终止等才调用 参数3:指定绑定时是否自动创建service...,当然了是service还没创建时。...布局文件和上一次的一样,不再多说 MyService的代码如下: public class MyService extends Service { private MyThread thread;...// TODO Auto-generated catch block e.printStackTrace(); } } } } 当然了记得在配置文件中注册service
四大组件之一,与Activity级别类似,只是Service没有前台显示,在后台运行。...:startService()启动Service 一旦启动便会在后台一直运行(即使启动它的程序退出了) Bind绑定:使用bindService()绑定一个Service,处于Bind状态的...Service提供了C/S调用接口,这个接口支持其他程序组件与Service进行交互,一个处于Bind状态的Service只能与其绑定的应用程序一起运行。...多个应用程序组件可以绑定到一个Service。当所有的绑定的程序组件都退出绑定后,被绑定的Service才会被销毁。...Service运行在主线程中,耗CPU则需创建新新线程防止无响应。
本节学习Service的生命周期。 既然Activity有生命周期,那同理Service也有自己的生命周期。...和学习Activity一样,我们先贴出Google官网给Service下的定义,以及生命周期图 从图中可以看到,左面一路下来是我们第二节课中说的用StartServer启动服务的流程。...; bindService(intent, sConnection, Service.BIND_AUTO_CREATE); } }); btn_unbind.setOnClickListener...onServiceDisconnected"); } } } MyService的代码:(和上节的MyService代码是样的) public class MyService extends Service...那这个问题,看完后,我们再次回到我们的混搭service上。 如果,让我们用混搭的方式启动服务后, 而没有解绑,是直接退出Activity了。
pom中引入对应的依赖,如果引入的三方jar包跟该项目Application所在包目录包含被依赖jar包目录,即下面的情况: 像上面这种包组织的话,是不需要额外加入任何配置的(前提是依赖jar包相应组件一定要有
本节学习Service的分类: 本地服务, 远程服务 本地服务: 指的是服务和启动服务的activity在同一个进程中 远程服务:指的是服务和启动服务的activity不在同一个进程中 我们以前使用的都是本地服务...而第三方游戏就是客户端 那我们先创建一个服务端: public class ZhiFuBaoService extends Service { @Override public IBinder...; } } 如果是本地服务,我们的Service就是如上的形式,但是如果是远程服务,就必须使用AIDL接口定义语言,对上面的代码改造。...需要到配置文件中注册: </service
在研究service是什么时,先来看看service不是什么: - service不是一个单独的进程。除非特别说明,否则service不会运行在他自己的进程中,而是运行在应用进程中。...这取决于service是否实现了一些相关的行为,比如开启一个线程来进行service所要做的工作。 Service本身很简单,可以借助service来实现一些简单或者复杂的交互。...startActivity(Intent.createChooser(intent, "Select share target")); 以上代码会赋予intent所指向的组件访问...来防止在低内存的情况下把service给杀死。 Sample 看一下官网给的例子 第一种情况:本地调用service servcie最常见的用法就是作为应用程序的第二大组件。...除非特殊声明,否则一个.apk中的所有组件都运行在同一个进程中。在同一个进程中时,调用service的client可以很容易就获取到service的Ibinder实体对像。
不是已经有了Service,那为什么还要引入IntentService呢?...的子类,需要继承与Service。...既然现象已经看了,我总结一下: Service与IntentService之间的区别 在这之前,需要知道Service的不足之处 a: Service不是专门的一条新的线程,因此不应该在Service中处理相当耗时的任务...b:service也不会专门的启动一个新的线程,Service与它所在的应用位于同一个进程中的。...所以,对于Service的2个缺陷,就引入了IntentService。
接着上两篇文章中的组件化前奏,今天我们把组件化给整体串联起来形成一个简易的案例。 大纲: 1 如何让各个独立的组件在壳工程中可随意拿取访问? 2如何进行组件数据传递?...一 如何在壳中随意拿取组件 为了可随时拿取组件我们需要借助一个单例来统一管理这些组件----这样无论是壳中还是组件中均可以随意拿取各个组件进行交互 public class ServiceFactory...这就需要我们之前说的各个组件如何随壳工程一起启动啦 不是太了解的看之前的文章,我们直接上代码 此处需要分为两部分 1 组件启动的Application中注册 2 注册金组件中类为了解耦添加中间service...来注册进ServiceFactory,使用是通过service间接访问组件和完成数据传递 ①组件对应的Application public class LoginApplication extends...new LoginService()); } @Override public void initAppFinish() {//做一些基础的针对性的配置操作 }} ② 中间service
ServiceConnection { //当服务连接成功后调用 @Override public void onServiceConnected(ComponentName name, IBinder service...) { // 得到服务的代理 me = (SheYou) service; } @Override public void onServiceDisconnected(ComponentName.../ TODO Auto-generated method stub } } } 服务代码: public class DangYuanService extends Service...ServiceConnection { //当服务连接成功后调用 @Override public void onServiceConnected(ComponentName name, IBinder service...) { // 得到服务的代理 dangyuan = (DangYuanInterface) service; } @Override public void onServiceDisconnected
上节学习如何创建了一个Service,并且用Activity启动一个Service。...MyService.class); stopService(intent); } }); } } MyService的代码: public class MyService extends Service...所以对这么耗时的任务,我们必须放入一个线程中去,防止卡死GUI显示 所以我对MyService的代码做了修改: public class MyService extends Service {
1、Service是否在主线程中执行,service里面是否能执行耗时的操作?...默认情况下,如果没有特殊指定Service所运行的进程,那么Service的Activity是运行在当前app所在进程的主线程里面的。不仅仅是服务,其实四大组件都是。...主线程不能执行耗时操作(网络请求,拷贝数据库,复制下载大文件) 特殊情况下,可以在清单文件中配置service所在的进程,让service在另外的进程中执行 <service android:name...3、Service的生命周期 对于Service,不同的开启方式,对应的生命周期也是不同的。...IntentService是Service的子类,比普通的Service增加了功能,Service只能运行在当前应用程序的主线程中,不能在其中处理耗时的操作。
前言 Service作为Android四大组件之一,应用非常广泛 本文将介绍对Service进行全面介绍(基础认识、生命周期、使用和应用场景) ---- 目录 ? ---- 1....基础知识 定义:服务,属于Android中的计算型组件 作用:提供需要在后台长期运行的服务(如复杂计算、下载等等) 特点:长生命周期的、没有用户界面、在后台运行 ---- 2....生命周期方法详解 具体请看我写的文章:Android:Service生命周期最全面解析 ---- 3. Service分类 3.1 Service的类型 ? 3.2 详细介绍 ? 4....Service的使用解析 由上述可知,服务Service总共分为: ?...使用场景 通过上述描述,你应该对Service类型及其使用非常了解; 那么,我们该什么时候用哪种类型的Service呢? 各种Service的使用场景请看下图: ? 6.
使用方法 Service方法需要在AndroidManifest.xml中进行注册 // 第一步:在AndroidManifest.xml中进行注册 <service android:name=".LocalService.../** * Service方法继承 * onBind()是一个抽象方法。...binder) { // 基于Binder拿到我们要的Service service = ((LocalService.ServiceBinder...Thread和Service的区别 总结 在ANR机制中,Service的响应时长不能超过20s,其实也可以比较直观的看出,Service其实并不能进行所谓耗时操作。...(具体看你怎么进行回答,主要还是一个知识点,Service运行在主线程) Service存在的原因是Activity是一个频繁会被创建、销毁的组件,虽然我们同样可以通过Thread进行异步操作,但是当Activity
前言 我们可以通过调用Context的startService来启动Service,也可以通过Context的bindService来绑定Service,建议阅读此篇文章前请阅读Android深入四大组件...这里mBase具体指向就是ContextImpl,不明白的请查看 Android深入四大组件(二)Service的启动过程这篇文章。...的onCreate方法启动Service,这一过程在Android深入四大组件(二)Service的启动过程这篇文章中已经讲过,这里不再赘述。...注释1处获取要绑定的Service 。...进行绑定,并且Service已经调用过onUnBind方法,则会调用Service的onRebind方法。
服务是Android四大组件之一,与Activity一样,代表可执行程序。但Service不像Activity有可操作的用户界面,它是一直在后台运行。...用通俗易懂点的话来说: 如果某个应用要在运行时向用户呈现可操作的信息就应该选择Activity,如果不是就选择Service。...Service的生命周期如下: Service只会被创建一次,也只会被销毁一次。那么,如何创建本地服务呢?...<service android:name=".Myservice" android:exported="true"/ ......这个时候也可以用IntentService来取代Service。
领取专属 10元无门槛券
手把手带您无忧上云