您的位置:首页 > 移动开发 > Android开发

Android Service 组件基础应用

2016-05-03 08:20 417 查看
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:其的生命周期依赖于访问者;

         参数解释:coun
是ServiceConnection对象,用来接收Service中onBind()方法

                    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

IntentService是Service一个子类;它有一些自己的特征;

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

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

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

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

5.      
为Service的onStartCommand()方法提供了默认实现,该实现会将请求Intent添加到队列中。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: