Service知识点

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

1、service是什么?

     service是四大组件之一,是一种可以在后台执行长时间运行操作而没有用户界面的应用组件。

     service可由其他用户组件比如activity、broadcast来启动,服务一旦被启动就将一直在后台运行,

     即使启动他的activity、broadcast已经被销毁了也不会搜影响。service也可以绑定activity来进行

     数据交互。由于service和activity在不同的进程中,可以通过进程见的通信来进行数据传输。

     service和broadcast他们都运行在主线程中,所以不能执行长时间的耗时操作。

     2、service和Thread的区别

      Thread是程序执行的最小单元,是分配cup的基本单位,可以用它进行异步操作。Service是安卓的

      一种机制,如果是本地的service它对应是运行在主线程上的,Thread的运行是相对独立的,service

      运行是依附在主线程上的相比Thread,service并不是这么独立。

        android的service意思是不依赖UI,即使activity关闭了,应用程序关闭了,service仍然在后台运行。

        如果你一定要在service里面做耗时操作,就必须在service里面创建子线程。service里面创建子线程

        和在activity里面创建子线程有什么区别呢?activity很难对子线程进行控制,特别是当Activity被销毁

        的时候你没有办法可以在获取之前创建子线程的实例。 

        应用场景是经常长时间在后台运行,而不用交互, 比如播放音乐,天气统计等等。

2、开启service的两种方式以及区别

        1、startservice:通过activity启动服务的时候,service一旦开启,service就会在后台无限期的运行

            这个时候如果你的activity被销毁了对servic是不受影响,除非手动关闭service。

            当service启动后执行生命周期方法。onBind是bindservice启动的时候会调用。

            onCreate是首次创建服务是,系统将调用此方法来执行一次设置程序(在调用onStartCommand和onBInd

            之前调用)如果服务已在运行,则不会调用此方法,该方法只会被调用一次。

            onStartCommand是每次通过startService方法启动service的时候都会被回调,这时服务正式开始。

            如果你想关闭service可以调用stopService来停止服务。

            onDestory是当服务不会再被使用的时候,系统会调用这个方法,可以在这个方法里面做一系列的清理及

            释放,如线程、注册的监听器等等。

        2、bindService:使用此方法启动service是activity和service是处于绑定状态的,可一多个activity绑定同一个

              service,绑定全部取消后service机会被自动销毁。

                如何创建?

                1、创建BindService服务端,继承Service并在类中创建一个实现Ibinder接口的实例对象并提供公共方法

                    给客户端调用。

                2、从onBind方法回调返回Binder实例。

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

                如何创建?

                1、创建继承与Service的类,并创建继承Binder的内部类。

                    

                2、在Service的onBind中把Binder类返回给客户端

                     

                3、在客户端中(Activity),通过bindService启动服务,里面传入Intent,ServiceConnection,服务常量

                     

                4、创建ServiceConnection类,它代表是客户端与服务端的连接

                       

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值