有趣有内涵的文章第一时间送达!

喝酒I创作I分享

生活中总有些东西值得分享

@醉翁猫咪 

1. Service是Android系统中的四大组件之一(Acitivty、Service、ContentProvider、BroadcastReceiver),以下关于Service描述错误的是()

您的回答为:在Android中能开机自启动的那些才是Service,无法开机自启动的就不是Service。

()Service与Activity类似,它的运行也有生命周期,都是Context的子类,但它没有用户界面而且只能在后台运行。即使用户换到其他的应用程序,Service还可以继续在后台运行。

()Service还可以用于进程间通信(Inter Process Communication IPC),解决两个不同Activity应用程序进程之间的调用和通信。首先用AIDL语言定义跨进程服务的接口,然后继承Service类实现跨进程服务,绑定和使用跨进程服务,就可以将数据打包进行进程间通讯了

()在Android中能开机自启动的那些才是Service,无法开机自启动的就不是Service。

()Service比Activity有个更高的优先级(在系统中永远运行的组件)。在系统资源紧张时,Service不会轻易被Android系统终止。在系统资源恢复后,Service也将自动恢复运行状态

()Service的启动/停止,绑定/解绑都是使用Intent来进行调用和消息传递的。

2. 下面哪一种不是android服务的类型

您的回答为:手动服务(manual service)

()绑定服务(bound service)

()本地服务(local service)

()信使服务(intent service)

()手动服务(manual service)

()远程服务(remote service)

()启动服务(started service)

()前台服务(foreground service)

3. Service的启动方式一般常用Started服务(启动服务)和Bound服务(绑定服务)两种,下面关于这两种启动服务方式的对比错误的是()

您的回答为:使用bindService()方法无法绑定由startService()方法启动的服务。startService()方法无法启动bindService()方法绑定的服务

()无论调用了多少次StartService(),只需要调用一次stopService()就可以停止Started服务。只有当所有的组件都调用unbindService()来解除与Bound服务的绑定后,Bound服务才会销毁

()Started服务是指组件通过调用startService()来启动服务。Bound服务是组将通过bindService()来绑定服务

()一般来说Started服务执行单一的操作,不返回结果给调用组件。Bound服务允许组件与服务进行交互,例如向服务发送请求和获取结果

()即使调用Started服务的组件被销毁,该Started服务依然可以继续运行。当没有组件和Bound服务绑定时,该Bound服务将会被销毁。

()使用bindService()方法无法绑定由startService()方法启动的服务。startService()方法无法启动bindService()方法绑定的服务

4. 要创建一个服务,需要定义Service子类继承于Service,并且重写一些重要的回调方法用于处理服务的生命周期,以下关于Service类方法的描述错误的是()

您的回答为:onUnbind():当一个组件想通过bindService()方法绑定服务时,该方法将会被系统调用。

()onUnbind():当一个组件想通过bindService()方法绑定服务时,该方法将会被系统调用。

()onCreate():当服务第一次被创建时,该方法将会被系统调用。该方法在onStartCommand()或onBind()方法之前调用

()onBind():这是一个必须实现的方法。当一个组件想通过bindService()方法绑定服务时,该方法将会被系统调用。该方法通过返回IBinder来提供组件与服务的通信接口。如果用户不允许绑定,那么只需要返回null

()onStartCommand():当组件通过StartService()方法请求服务启动时,该方法将被系统调用。在该方法内,会接收到组件传过来的Intent,里面包含有关服务的数据。一旦该方法开始执行,服务就能够在后台运行。对于Bound服务,不需要实现该方法。

()onDestory():当服务不再使用或这在被销毁时,该方法将被系统调用。在个方法中,实现对线程,监听器等资源的清理或者释放。

5. 下面对于android服务叙述错误的是。

https://www.cnblogs.com/leslies2/p/5401813.html

您的回答为:Service 服务不会自动创建线程,如果开发人员没有为Service服务添加异步操作,那Service服务将运行于主线程当中。服务主线程运行时间过长也会产生ANR,服务主线程ANR的超时时间是60秒。

()本地服务(Local Service)寄存于当前的进程当中,当前进程结束后Service也会随之结束,Service可以随时与Activity等多个部件进行信息交换。Service服务不会自动启动线程,如果没有人工调用多线程方式进行启动,Service将寄存于主线程当中。

()Service服务主要分为Local Service本地服务与Remote Service远程服务两种,本地服务只支持同一进程内的应用程序进行访问,远程服务可通过AIDL(Android Interface Definition Language)技术支持跨进程访问。

()Service服务不会自动创建线程,如果开发人员没有为Service服务添加异步操作,那Service服务将运行于主线程运行时间过长也会产生ANR,服务主线程ANR的超时时间是60秒。

()服务可以通过Context.startService()和Context.bindService()进行启动,一般Local Service本地服务可使用其中一种方法启动,但Remote Service远程服务只能使用Context.bindService()启动,而两种调用方式在使用场景与活动流程中都存在差异。

()Service服务是Android系统最常用的四大部件之一,Android支持Service服务的原因主要目的有两个,一是简化后台任务的实现,二是实现在同一台设备当中跨进程的远程信息通信。

()远程服务(Remote Service)独立寄存于另一进程中,通过AIDL(Android Interface Definition Language)接口 定义语言,实现Android设备上的两个进程间通信(IPC)。AIDL的IPC机制是基于RPC(Remote Proceduce Call)远程过程调用协议建立的,用于约束两个进程间的通讯规则,供编译器生成代码。进程之间的通信信息,首先会被转换AIDL协议消息,然后发送给对方,对方收到AIDL协议消息后再转换成相应的对象。

6. Bound Service 是允许其他的组件(如 Activities)绑定到其上面,可以发送请求,也可以接受请求,甚至可以进行进程间的通信。当创建一个能提供绑定功能的服务时,我们就必须要提供一个IBinder对象,客户端就可以使用IBinder对象来与服务进行交互,在Android系统中,以下哪种方式可以创建IBinder

您的回答为:

扩展Binder类:这种方式当你的service只给当前的程序用而且在后台执行的时候采用这种方式比较好。意思很简单,不需要跨进程间通信。┋

使用Message机制:消息机制相对于Binder的方式就比较复杂点,它支持跨进程间调用的(这种方式的基础其实也是AIDL,只不过不需要涉及到AIDL那么深),这种情况下,service会定义一个handle来处理不同的object的服务请求,有一点要提起的是,这里的IBinder对所有的客户端来说是共享的。

当然我们的客户端也可以定义自己的handle来处理和service之间来进行交互。消息机制是一种实现进程间通信的最简单的方式,因为所有的请求都会放到一个消息队列当中去进行轮询处理(意思就是单线程啦),每次只处理一个服务请求,这样就不要保证你设计的service需要保证是线程安全状态的。┋

使用AIDL(Android interface definition language 安卓接口定义语言)。:这种方式是最难的一种方式了,他会把所有的工作都会分解成最原始的语义,从而使得系统能够理解该工作目的。然后进行进程间的通信。

前面说过message采用的是AIDL的架构基础的,当我们需要同时处理多个请求,而不是放在队列里面一个一个的处理的时候就可以采用这种方式了。使用这种方式你必须保证的你的service能够支持多线程并且保证其实线程安全状态。一般情况下会先创建一个.aldl文件来定义程序的接口,系统会为你自动自动生成抽象类以及IPC的处理,然后你就可以在你的service种进行extend了。

全选

7. 以下对intentservice描述错误的是

您的回答为:intentservice本质是一种特殊的Service,继承自Service是一个最终类。

()intentservice可以用于在后台执行耗时的异步任务,当任务完成后会自动停止

()intentservice拥有较高的优先级,不易被系统杀死(继承自Service的缘故),因此比较适合执行一些高优先级的异步任务

()即使我们多次启动IntentService,但IntentService的实例只有一个,这跟传统的Service是一样的,最终IntentService会去调用onHandleIntent执行异步任务。

()intentservice本质是一种特殊的Service,继承自Service是一个最终类。

()创建IntentService时,只需实现onHandleIntent和构造方法,onHandleIntent为异步方法,可以执行耗时操作。

()intentservice内部通过HandlerThread和Handler实现异步操作

()继承IntentService,有两个方法必须实现,一个是构造方法,必须传递一个线程名称的字符串,另外一个就是进行异步处理的方法onHandleIntent(Intent intent)方法,其参数intent可以附带从activity传递过来的数据。

8. which one is wrong about android service.

http://android.xsoftlab.net/reference/android/app/Service.html

您的回答为:A Service is an application component that provides a screen with which users can interact in order to do something, such as dial the phone, take a photo, send an email, or view a map.

()Note that services, like other application objects, run in the main thread of their hosting process. This means that, if your service is goig to do any CPU intensive (such as MP3 playback) or blocking (such as networking) operations, it should spawn its own
thread in which to da that work.

()Each service class must have a corresponding <service> declaration in its package's Android Manifest.xml.

()A Service is an application component representing either an application's desire to perform a longer-running operation while not interacting with the user or to supply functionality for other applications to use.

()A Service is an application component that provides a screen with which users can interact in order to do something, such as dial the phone, send an email, or view a map.

()Services can be started with Context.startService() and Context.bindService()

()The IntentService class is available as a standard implementation of Service that has its own thread where it schedules its work to be done.

9. Which callback methods you should not override when create subaclss of Service.

http://android.xsoftlab.net/guide/components/services.html

您的回答为:startService():Request that a given application service be started.

()startService():Request that a given application service be started.

()onStartCommand():The system calls this method when another component, such as an activity, requests that the service be started, by calling startService(). Once this method executes, the service is started and can run in the background indefinitely. If you
implement this, it is your responsibility to stop the service when its work is done, by calling stopSelf() or stopService().(If you only want to provide binding, you don't need to implement this method.)

()onBind():The system calls this method when another component wants to bind with the service (such as to perform RPC), by calling bindService(). In your implementation of this method, you must provide an interface that clients use to communicate with the service,
by returning an IBinder. You must always implement this method, but if you don't want to allow binding, then you should return null.

()onCreate(): The system calls this method when the service is first created, to first created, to perform one-time setup procedures (before it calls either onStartCommand() or onBind()).If the service is already running, this method is not called.

()onDestroy(): The system calls this method when the service is no longer used and is being destroyed. Your service should implement this to clean up any resources such as threads, registered listeners, receivers, etc. This is the last call the service receives.

10. Which type of job that IntentService can not do with?

http://android.xsoftlab.net/guide/components/services.html

您的回答为:Manage access to a structured set of data, encapsulate the data, and provide mechanisms for defining data security.

()Provides a default implementation of onStartCommand() that sends the intent to the work queue and then to your onHandleIntent() implementation.

()Creates a default worker thread that executes all intents delivered to onStartCommand() separate from your application's main thread.

()Manage access to a structured set of data, encapsulate the data, and provide mechanisms for defining data security.

()Provides default implementation of onBind() that returns null.

()Creates a work queue that passes one intent at a time to your onHandleIntent() implementation, so you never have to worry about multi-threading.

()Stops the service after all start requests have been handled, so you never have to call stopSelf().

后续

关注我,每天都有优质技术文章推送。工作,学习累了的时候放松一下自己。

本篇文章同步微信公众号

欢迎大家关注我的微信公众号:「醉翁猫咪」

2016级移动应用开发在线测试12-service的更多相关文章

  1. 2016级移动应用开发在线测试13-Location、Sensor & Network

    有趣有内涵的文章第一时间送达! 喝酒I创作I分享 生活中总有些东西值得分享 @醉翁猫咪  1. 充分利用智能手机的GPS定位信息,创造了O2O的商业模式,打通了线上与线下的信息流和商流,极大地推动了移 ...

  2. 2016级移动应用开发在线测试14-MediaPlayer

    有趣有内涵的文章第一时间送达! 喝酒I创作I分享 生活中总有些东西值得分享 @醉翁猫咪 1. MediaStore类是android系统提供的一个多媒体数据库,android中多媒体信息都可以从这里提 ...

  3. 【转载】在 2016 年做 PHP 开发是一种什么样的体验?(一)

    转自:https://www.v2ex.com/t/312651 在 2016 年做 PHP 开发是一种什么样的体验?(一) 嘿,我最近接到一个网站开发的项目,不过老实说,我这两年没怎么接触编程,听说 ...

  4. 【转】在 2016 年做 PHP 开发是一种什么样的体验?(一)

    原文: https://www.v2ex.com/t/312651 在 2016 年做 PHP 开发是一种什么样的体验?(一) 嘿,我最近接到一个网站开发的项目,不过老实说,我这两年没怎么接触编程,听 ...

  5. 闽江学院软件学院2016级JAVA构建之法-学生自学兴趣小组招募通知

    为提升我2016级学生提升JAVA软件开发学习氛围,鼓励更多同学通过自学.团队学习.在线(社区)学习等方式学习并掌握JAVA课程,尤其是鼓励同学们通过微软中国邹欣老师所倡导的"构建之法&qu ...

  6. C# 开发XML Web Service与Java开发WebService

    一.web service基本概念 Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量 ...

  7. 【Todo】抽象渗漏法则 & 找到理想员工 & 软件开发成功 12 法则 & Joel on Software

    Joel应该是个软件专家,这是他文章汇总的中文版本: http://local.joelonsoftware.com/wiki/Chinese_%28Simplified%29 其中有几篇值得好好看看 ...

  8. Windows Phone 8初学者开发—第12部分:改进视图模型和示例数据

    原文 Windows Phone 8初学者开发—第12部分:改进视图模型和示例数据 第12部分:改进视图模型和示例数据 原文地址:http://channel9.msdn.com/Series/Win ...

  9. Windows Phone开发(12):认识一下独具个性的磁贴

    原文:Windows Phone开发(12):认识一下独具个性的磁贴 对"磁贴"的理解是一点也不抽象的,为什么呢?只要你愿意启动WP系统,无论你是在模拟器中还是在真机中,是的,桌面 ...

随机推荐

  1. Laravel入门及实践,快速上手ThinkSNS+二次开发

    温馨提示: l 本文纯干货,文字和代码居多,且适合零基础Laravel学习者: l 本文会新建一个名为 blog 的 Laravel 程序,这是一个非常简单的博客. l  欢迎随时关注ThinkSNS ...

  2. 关于justify-content属性的再学习(区分三个属性)

    justify-content属性: 用来表示可伸缩项目在主轴方向上的对齐方式: 取值范围为flex-start,flex-end,center,space-between,space-around: ...

  3. JavaScript之定时器

    (1)单次定时器 setTimeout(function(){执行的动作},时间:ms) 单次定时器,一般用于函数节流 案例: var timer=setTimeout(function(){ doc ...

  4. Git版本管理工具使用

    1.Git简介 Git(读音为/gɪt/.)是一个开源的分布式版本控制系统,可以有效.高速地处理从很小到非常大的项目版本管理. Git 是 Linus Torvalds 为了帮助管理 Linux 内核 ...

  5. idea2018.3导入grails项目,无法正常使用问题解决

    注:作者的grails版本为2.0.4,grails3版本以上的导入方式为gradle方式 一.导入grails项目 1.启动新项目向导.如果IntelliJ IDEA目前没有打开任何项目,请在欢迎屏 ...

  6. day 03 预科

    目录 什么是变量: 变量的组成 变量的风格 1.驼峰体 2.下划线 变量名的组成规范 注释的作用 turtle库的简单使用 什么是变量: 1.是变化的量. 2.变:现实世界中的状态是会发生改变的. 3 ...

  7. opencv——图像掩码操作

    使用opencv通过掩码去扣取图像中感兴趣的区域 步骤: 1.读取一张图片 2.转换颜色格式为hsv 3.设置要扣取区域颜色的上下门限 4.从原始图像中获取感兴趣区域的掩码 5.使用掩码和原始图像做云 ...

  8. thymeleaf教程-springboot项目中实现thymeleaf自定义标签

    转载: http://www.9191boke.com/466119140.html    91博客网 开始: 在使用thymeleaf的过程中有时候需要公共部分渲染页面,这个时候使用自定义标签实现自 ...

  9. 使用Cloudera Manager部署Kafka消息队列

    使用Cloudera Manager部署Kafka消息队列 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.下载需要安装的Kafka版本 1>.查看Cloudera Dis ...

  10. 视图查询的数据和sql查询的数据不一样

    视图查询的数据和sql查询的数据不一样. 手动刷新视图 exec sp_refreshview  视图名称