美文网首页
Service面试详解

Service面试详解

作者: 程序猿BOSS | 来源:发表于2017-10-20 11:14 被阅读5次

    1、Service应用场景,以及和Thread的区别

    1.1Service是什么?

    Service(服务)是一种可以在后台执行长时间运行操作而没有用户界面的应用组件。

    注意:Service是运行在主线程当中的,不能做耗时操作。否则会引起ANR

    1.2Service和Thread的区别

    Thread是程序执行的最小单元,它可以执行耗时操作。Thread的运行是相对独立的。

    而Service的运行是依赖于它所在的主线程上,相比于Thread Service不是那么的独立

    Android的后台(服务)运行完全不依赖于UI线程,即使Activity被销毁了或者程序被关闭了。这个服务进程依然运行在后台会进行一些计算什么的工作,要在Service做耗时操作一定要创建子线程。

    Activity很难对子线程Thread进行控制,特别是在Activity被销毁之后,很难获取之前创建的子线程。而Service处理后台任务,Activity可以很方便的对Service进行创建和销毁。完全不用担心对后台任务无法进行控制的情况,

    在应用中,如果是长时间的在后台运行,而且不需要交互的情况下,使用服务。同样是在后台运行,不需要交互的情况下,如果只是完成某个任务,之后就不需要运行,而且可能是多个任务,需需要长时间运行的情况下使用线程。

    Service应用场景:长时间在后台运行部需要和用户交互,例如播放音乐、获取天气

    2、开始Service的两种方式以及区别

    2.1StartService

    定义一个类继承Service;

    在Manifest.xml文件中配置该Service;

    使用Context的startService(Intent)方法启动该Service;

    不再使用是调用StopService(Intent)方法停止该服务

    2.2BindService

    创建BindService服务端,并在类中继承Service,创建一个实现IBinder接口的实例对象并提供公共方法给客户端调用;

    从OnBind()回调方法返回此Binder实例;

    在客户端中,从onSevierConnected()回调方法接收Binder,并使用提供的方法调用绑定服务。

    相关文章

      网友评论

          本文标题:Service面试详解

          本文链接:https://www.haomeiwen.com/subject/rhauuxtx.html