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添加到队列中。
中的一个后台服务;
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添加到队列中。
相关文章推荐
- 简易版停车管理系统(Android)
- 【风马一族_Android】Android学习
- 通过UserAgent判断设备为Android、Ios、Pc访问
- Android Service 回顾
- Android ClassyShark vs ApkTool
- 自动批量安装APK
- Android 使用Fragment界面向下跳转并一级级返回
- android fragment 跳到另一个fragment
- android FRAMENT的切换(解决REPLACE的低效)
- android studio使用SQLite时错误
- Android远程服务例程
- 持久化保存Parcelable实践
- Android Studio如何使用Git提交代码到GitHub和OsChina并解决冲突
- android全系统动态二进制分析--CopperDroid
- Android studio 如何打包项目,与版本升级
- 神奇的504 Bad Gateway Timeout
- LitePal的使用
- android 个推配置
- 蜂窝教育Android培训以实战练就学员真本事
- [android] 轮播图-无限循环