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

Android核心技术之(7)---四大应用组件之Service

2017-02-22 14:25 363 查看
1.Service是什么

1.1.Service是一个应用组件,它用来在后台完成一个时间跨度比较大的工作且没有关联任何界面
1.2.一个Service可以完成下面这些工作:

  访问网络

  播放音乐

  文件IO操作

  大数据量的数据库操作

  ……

1.3. 服务的特点:

•Service在后台运行,不用与用户进行交互        
•即使应用退出, 服务也不会停止.
•在默认情况下,Service运行在应用程序进程的主线程(UI线程)中,如果需要在Service中处理一些网络连接等耗时的操作,那么应该将这些任务放在分线程中处理,避免阻塞用户界面

2.区别Service与Activity

2.1.Activity:    

•Activity对应一个界面
•应用退出, Activity对象就会死亡
•应用再次进入, 启动的Activity对象是重新创建的

2.2.Service

•不与任何界面关联
•应用退出, Service仍在运行
•应用再次进入, 启动的Service还是前面运行
4000
的Service对象

3.区别Service与Thread

3.1.Service

•用来在后台完成一个时间跨度比较大的工作的应用组件
•Service的生命周期方法运行在主线程, 如果Service想做持续时间比较长的工作, 需要启动一个分线程(Thread)
•应用退出: Service不会停止
•应用再次进入: 可以与正在运行的Service进行通信

3.2.Thread

•用来开启一个分线程的类, 做一个长时间的工作
•Thread对象的run()在分线程执行
•应用退出: Thread不会停止,
•应用再次进入: 不能再控制前面启动的Thread对象

4.Service的分类

4.1.Local Service(本地服务)
Service对象与Serive的启动者在同个进程中运行, 两者的通信是进程内通信

4.2.Remote Service(远程服务)
Service对象与Service的启动者不在同一个进程中运行, 这时存在一个进程间通信的问题,Android专门为此设计了AIDL来实现进程间通信

5.定义一个Service

5.1.定义一个类继承于Service类

publicclass MyServiceextends Service
{

}

5.2.在AndroidManifest.xml中配置Service
<serviceandroid:name=".test.MyService">

<intent-filter>

 
<action android:name="com.atguigu.service.test.MyService" />

</intent-filter>

</service>

6.启动和停止一个本地Service

6.1.方式一: 
一般启动与停止

context.startService(Intentintent)

context.stopService(Intentintent)

6.2.方式二 :
绑定启动与解绑
context.bindService(Intentintent, ServiceConnection
connection)

context.unbindService(ServiceConnectionconnection)

区别:看Service启动后是否与启动者有关联?Service对象经历的生命周期是否相同?

7.Service的生命周期方法

•onCreate()
•onStartCommand()
•onBind()
•onUnbind()
•onDestroy()

8.远程Service

每个应用程序都运行在自己的独立进程中,并且可以启动另一个应用进程的服务,而且经常需要在不同的进程间传递数据对象。在Android平台,一个进程不能直接访问另一个进程的内存空间,所以要想对话,需要将对象分解成操作系统可以理解的基本单元,并且有序的通过进程边界。

AIDL:(Android Interface Definition Language):用于生成可以在Android设备上两个进程之间进行进程间通信(interprocess
communication, IPC)的代码。如果在一个进程中(例如Activity)要调用另一个进程中(例如Service)对象的操作,就可以使用AIDL生成可序列化的参数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: