Android Service
兴帅_
我的博客大多是我学习过程中笔记部分中整理出来的,
以专栏的方式存放知识点,参考了很多大牛的资料。没有那么专业。没有个人情感。有些部分已经找不到出自何方。但我尊重知识整理的先驱们。salute!
展开
-
Service如何保证服务不被杀死
1,如何保证服务不被杀死【1】因内存资源不足而杀死Service 这种情况比较容易处理,可将onStartCommand() 方法的返回值设为 START_STICKY或START_REDELIVER_INTENT ,该值表示服务在内存资源紧张时被杀死后,在内存资源足够时再恢复。也可将Service设置为前台服务,这样就有比较高的优先级,在内存资源紧张时也不会被杀掉。这两点的实现,我们在...原创 2019-12-10 09:07:15 · 598 阅读 · 0 评论 -
Service显示启动和隐式启动
1,显示启动 直接上代码一目了然,不解释了。 //显示启动Intent intent = new Intent(this,ForegroundService.class);startService(intent);2, 隐式启动 需要设置一个Action,我们可以把Action的名字设置成Service的全路径名字,在这种情况下android:ex...原创 2019-12-10 09:06:29 · 1172 阅读 · 0 评论 -
服务Service与线程Thread的区别
1,两者概念的迥异【1】Thread 是程序执行的最小单元,它是分配CPU的基本单位,android系统中UI线程也是线程的一种,当然Thread还可以用于执行一些耗时异步的操作。【2】Service是Android的一种机制,服务是运行在主线程上的,它是由系统进程托管。它与其他组件之间的通信类似于client和server,是一种轻量级的IPC通信,这种通信的载体是bind...原创 2019-12-10 09:05:35 · 1903 阅读 · 0 评论 -
Service发送前台服务以及通知
1,介绍:【1】前台服务被认为是用户主动意识到的一种服务,因此在内存不足时,系统也不会考虑将其终止。【2】前台服务必须为状态栏提供通知,状态栏位于“正在进行”标题下方,这意味着除非服务停止或从前台删除,否则不能清除通知。【3】例如将从服务播放音乐的音乐播放器设置为在前台运行,这是因为用户明确意识到其操作。 状态栏中的通知可能表示正在播放的歌曲,并允许用户启动 Activ...原创 2019-12-10 09:05:07 · 906 阅读 · 0 评论 -
关于启动服务与绑定服务间的转换问题
1,启动状态和绑定状态同时存在时,使用场景【1】虽然服务的状态有启动和绑定两种,但实际上一个服务可以同时是这两种状态,也就是说,它既可以是启动服务(以无限期运行),也可以是绑定服务。有点需要注意的是Android系统仅会为一个Service创建一个实例对象,所以不管是启动服务还是绑定服务,操作的是同一个Service实例,而且由于绑定服务或者启动服务执行顺序问题将会出现以下两种情况:...原创 2019-12-10 09:03:38 · 423 阅读 · 0 评论 -
Service使用注意事项
1,注意事项:【1】多个客户端可同时连接到一个服务。不过,只有在第一个客户端绑定时,系统才会调用服务的 onBind() 方法来检索 IBinder。系统随后无需再次调用 onBind(),便可将同一 IBinder 传递至任何其他绑定的客户端。当最后一个客户端取消与服务的绑定时,系统会将服务销毁(除非 startService() 也启动了该服务)【2】 通常情况下我们应该在客户端...原创 2019-12-10 09:02:26 · 302 阅读 · 0 评论 -
BindService ---使用Messenger服务端与客户端双向消息传递
1, Messenge方式进行进程间通信的原理图:2,实现一个简单服务端与客户端双向消息传递的简单例子。【1】创建一个服务类MessengerService继承自Servicepackage com.ipctest.messenger;import android.app.Service;import android.content.Intent;import andr...原创 2019-12-10 09:02:01 · 553 阅读 · 0 评论 -
BindService ---使用Messenger在服务端接收信息给客户端发送的消息
1,BindService ---使用Messenger 我们接着来了解服务与远程进程(即不同进程间)通信,而不同进程间的通信,最简单的方式就是使用 Messenger 服务提供通信接口,利用此方式,我们无需使用 AIDL 便可执行进程间通信 (IPC)。以下是 Messenger 使用的主要步骤: 【1】服务实现一个 Handler,由其接收来自客户端的每个调用的回调...原创 2019-12-10 09:01:05 · 776 阅读 · 0 评论 -
BindService ---扩展Binder类
1,BindServcie --扩展Binder类开启服务 前面描述过,如果我们的服务仅供本地应用使用,不需要跨进程工作,则可以实现自有 Binder 类,让客户端通过该类直接访问服务中的公共方法。其使用开发步骤如下 【1】创建BindService服务端,继承自Service并在类中,创建一个实现IBinder 接口的实例对象并提供公共方法给客户端调用【2】从 onBin...原创 2019-12-10 09:00:15 · 334 阅读 · 0 评论 -
Service中bindService 介绍
1,介绍:【1】绑定服务是Service的另一种变形,当Service处于绑定状态时,其代表着客户端-服务器接口中的服务器。【2】当其他组件(如 Activity)绑定到服务时(有时我们可能需要从Activity组建中去调用Service中的方法,此时Activity以绑定的方式挂靠到Service后,我们就可以轻松地方法到Service中的指定方法),组件(如Activity)可以...原创 2019-12-10 08:59:04 · 466 阅读 · 0 评论 -
Service用startService方式开启服务
1,创建SimpleService服务类【1】SimpleService继承了Service类,【2】重写了onBind方法,该方法是必须重写的,但是由于此时是启动状态的服务,则该方法无须实现,返回null即可,只有在绑定状态的情况下才需要实现该方法并返回一个 IBinder的实现类(这个后面会详细说),【3】接着重写了onCreate、onS...原创 2019-12-09 23:13:09 · 1085 阅读 · 0 评论 -
Service生命周期
【1】生命周期: 其中左图显示了使用 startService() 所创建的服务的生命周期,右图显示了使用 bindService() 所创建的服务的生命周期。通过图中的生命周期方法,我们可以监控Service的整体执行过程,包括创建,运行,销毁,关于Service不同状态下的方法回调在前面的分析中已描述得很清楚,这里就不重复了,下面给出官网对生命周期的原文描述:...原创 2019-12-09 23:12:15 · 454 阅读 · 0 评论 -
Service在AndroidManifest注册参数
1,Service在清单文件中的声明 前面说过Service分为启动状态和绑定状态两种, 但无论哪种具体的Service启动类型,都是通过继承Service基类自定义而来,也都需要在AndroidManifest.xml中声明,那么在分析这两种状态之前, 我们先来了解一下Service在AndroidManifest.xml中的声明语法,其格式如下:...原创 2019-12-09 23:11:10 · 1836 阅读 · 0 评论 -
Service介绍
1,Service是什么: Service(服务)是一个一种可以在后台执行长时间运行操作而没有用户界面的应用组件。服务可由其他应用组件启动(如Activity),服务一旦被启动将在后台一直运行,即使启动服务的组件(Activity)已销毁也不受影响。 此外,组件可以绑定到服务,以与之进行交互,甚至是执行进程间通信 (IPC)。 例如,服务可以处理网络事务、播放音乐,执行文件 I/O 或与...原创 2019-12-09 23:10:36 · 2443 阅读 · 0 评论