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

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还是前面运行的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生成可序列化的参数。








如何才能真正进阶为Android应用开发高手?必须深入理解Android核心技术的底层原理和在开发中总结并使用各种最佳实践,别无他法!深入Android应用开发:核心技术解析与最佳实践以Android的源代码为主,SDK为辅,针对应用开发者的需求,对各种核心技术的使用方法、底层原理和实现细节进行了深入而详细的讲解,同时辅之以大量案例和最佳实践,为开发者的进阶修炼和开发高质量的应用提供了绝佳指导。 第1章深入介绍了Android的4大核心组件和9大主要应用框架;第2章透彻讲解了资源、组件、事件处理、应用风格和数据适配等核心知识;第3章系统地展示了各种常用的UI控件的使用方法及原理,并对XML和Java这两种控件属性配置方式和适用场景进行了分析和比较;第4章深入阐述了Android的数据存储与管理;第5章分析了Android在UI层、框架层和内核层的通信机制和原理;第6章深入讲解了Android实现多线程的两种主要方式(原生Java线程和Android对Java线程的封装)的原理,并对它们进行了全方位比较;第7章深入介绍了Android网络编程的核心技术;第8章详细讲解了Android中的2D图像、3D图像、2D图形以及动画方面的知识;第9章全面介绍了Android的多媒体编程,包括音频、视频和Camera服务等,并对TTS的实现进行了剖析;第10章详细讲解了Android的跨语言调用;第11章深入剖析了Android的安全框架和安全机制;第12章针对商业应用的需要讲解了Android的调试、测试与性能优化;第13章全面地剖析了Android的编译系统,包括编译工具、映像文件编译、SDK编译、NDK编译和目标系统的配置等;第14章分析了Android系统的启动过程;第15章讲解了Android的系统管理原理,包含内存管理、应用管理、电源管理、系统管理,以及系统的还原、升级、配置和备份等多方面的内容,能帮助开发者从一个更高的视角去理解Android的运行机制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值