Android Service 组件基础应用

来源:互联网 发布:淘宝里什么是旺旺号 编辑:程序博客网 时间:2024/05/24 04:58

Serviece 是一个Android中的一个后台服务;

Service:是由Context派生出来的。所以可以调用Context中的方法,主要用于长时间耗时操作,由于其是在主线程运行的。所以一般会在service中起一个工作线程。又因为它的级别比后台进程的级别高。所以比直接在Activity中起工作线程,更能避免在内存不足时。被系统kill掉;

Serviece 一直运行在后台,是没有界面的,所以绝对不会到前台的(如果需要和用户进行交互,就需要使用Activity)Service被启动(startservice)是有自己独立的生命周期,不过Service

只是被绑定(bindservice())的话,其生命周期是依赖于其访问者;

 

一.Service的创建

 需继承Serviece(其是抽象类),重写部分方法实现业务;

在配置文件中注册;(intent-filter可用于隐式调用)

 

 

 

 

 

 

,Service中的主要方法

onCreate():创建时调用

onBind(Intent intent):绑定时调用

onStartCommand(Intent intent, int flags, int startId):每次调用startService()调用

public void onRebind(Intent intent):重新绑定时调用

onUnbind(Intent intent);解除绑定时调用.

onDestroy():销毁时调用

 

,Service被调用的两种方式,和混合方式;

startService(intent);

此模式启动Service :其有自己独立的生命周期。其访问者退出了。也有可继续运行;

所以Service 有时会调用stopSelf()方法进行销毁

                    不过不能与其访问者有相互的数据通信;

调用Service中的方法依次是:onCreate()---->onStartCommand-----> onDestroy();

bindService(intent,coun,BIND_AUTO_CREATE);

此模式启动Service:其的生命周期依赖于访问者;

         参数解释:counServiceConnection对象,用来接收ServiceonBind()方法

                    BIND_AUTO_CREATE是创建模式。(不存在则自动创建)

         的返回值;如图

 

 

 

调用Service中的的方法依次是: onCreate()àonBind(Intent intent)à onUnbind(Intent intent)

à onDestroy();

 

 

混合方式:

Service被不同的Activity分别调用了startService(intent)

bindService(intent,coun,BIND_AUTO_CREATE)时。其有自己独特的生命周期

:必须调用了stopservice()unbindservice();其才会销毁。并调用onDestroy()

 

 

使用IntentService

IntentServiceService一个子类;它有一些自己的特征;

1.       IntentService会创建单独的工作线程来处理所有Intent请求(IntentService中有一个队列,用来存储Intent所以。所以当有多个Intent请求,它会依次执行)

2.       IntentService会利用创建的工作线程来处理onHandleIntent()方法,所以我们只需把业务写到此方法中即可,

3.       当所有请求处理完毕后,IntentService会自动停止,因此开发者无需调用StopSelf()方法来停止服务;

4.       ServiceonBind方法提供了默认实现,默认实现的onBind()方法返回null;

5.       ServiceonStartCommand()方法提供了默认实现,该实现会将请求Intent添加到队列中。

0 0