1、Service应用场景,以及和Thread的区别
1.1Service是什么?
Service(服务)是一种可以在后台执行长时间运行操作而没有用户界面的应用组件。
注意:Service是运行在主线程当中的,不能做耗时操作。否则会引起ANR
1.2Service和Thread的区别
Thread是程序执行的最小单元,它可以执行耗时操作。Thread的运行是相对独立的。
而Service的运行是依赖于它所在的主线程上,相比于Thread Service不是那么的独立
Android的后台(服务)运行完全不依赖于UI线程,即使Activity被销毁了或者程序被关闭了。这个服务进程依然运行在后台会进行一些计算什么的工作,要在Service做耗时操作一定要创建子线程。
Activity很难对子线程Thread进行控制,特别是在Activity被销毁之后,很难获取之前创建的子线程。而Service处理后台任务,Activity可以很方便的对Service进行创建和销毁。完全不用担心对后台任务无法进行控制的情况,
在应用中,如果是长时间的在后台运行,而且不需要交互的情况下,使用服务。同样是在后台运行,不需要交互的情况下,如果只是完成某个任务,之后就不需要运行,而且可能是多个任务,需需要长时间运行的情况下使用线程。
Service应用场景:长时间在后台运行部需要和用户交互,例如播放音乐、获取天气
2、开始Service的两种方式以及区别
2.1StartService
定义一个类继承Service;
在Manifest.xml文件中配置该Service;
使用Context的startService(Intent)方法启动该Service;
不再使用是调用StopService(Intent)方法停止该服务
2.2BindService
创建BindService服务端,并在类中继承Service,创建一个实现IBinder接口的实例对象并提供公共方法给客户端调用;
从OnBind()回调方法返回此Binder实例;
在客户端中,从onSevierConnected()回调方法接收Binder,并使用提供的方法调用绑定服务。
网友评论