Service需要了解的理论知识
来源:互联网 发布:黑马程序员就业班 编辑:程序博客网 时间:2024/06/14 12:20
Service概念:能在后台长时间运行,且不提供用户界面的应用程序组件。
1.Service分类:
Started Service:当应用程序组件(如activity)通过startedService()方法启动Service时,Service处于启动状态,一旦启动,service就可以在后台无期限运行;停止自身需要调用stopSelf()方法或者其他组件调用stopService()方法来止Service,Service停止 时,系统将其销毁;
Bound Service:当应用程序组件通过调用bindService()方法绑定到service时,service被创建处于绑定状态,客户端通过IBinder接口与Service通信,多个组件可以绑定到一个service上,当他们都解绑时,service被销毁;
Intent Service:是继承于service并处理异步请求的一个类,会创建独立的worker线程来处理所有的intent请求,无需处理多线程问题,所有请求完成后IntentService会自动停止,无需调用stopSelf()方法停止service;使用时继承IntentService类,重写onHandlerIntent()方法即可,在不必同时处理多个请求时,是最佳选择;
2.Service生命周期:
start Service:
onCreate()--onStaetCommand()--stopService()/stopSelf()--onDestroy();
bindService():
onCreate()--onBind()--unBindService()--onUnbind()--onDestroy;
3.在创建service后,系统在AndroidManifest.xml文件中自动配置Service,使用<service.../>标记,会出现enabled、exported两个属性
android:enabled
能否被实例化,true表示能,false表示不能,默认为true;
android:exported
其他组件是否可以调用Service或者与其交互,true表示能,false表示不能;
4.使用Service需注意的问题:
Service不会专门启动一个线程执行耗时操作,所有的操作都在主线程中进行,所以容易出现ANR(程序无响应,可选择等待或关闭)情况;
Service不会自动停止,需要调用stopSelf()或者stopService()方法停止;
5.IntentService
使用IntentService不会出现4中的问题,因为IntentService在开启Service时,会自动开启一个新的线程去执行,请求完成 后IntentService会自动停止;
- Service需要了解的理论知识
- Service的肤浅了解
- php 需要了解的
- 需要了解的
- 前端需要了解的
- 需要了解的知识
- 需要了解的知识点
- 需要了解的注解
- 高效了解需要了解的linux命令
- android 的service一点了解
- 简单了解Android的Service
- 开发人员需要了解的测试
- ACM需要了解的基础知识
- 程序员需要了解的英语词汇
- phper需要了解的东东
- 开发者需要了解的WebKit
- phper需要了解的东东
- 需要了解学习的新技术
- 深度增强学习入门笔记(一)
- github相关
- NDk环境变量的配置、AS中配置javah-jni、ndk-build
- JAVA多线程系列--指令重排和happens-before规则
- python爬虫scrapy之贷联盟黑名单爬取
- Service需要了解的理论知识
- 计算机安全面临的常见问题分析
- ReactNative开发中使用react-native-vector-icons
- iOS8之后, 保存图片到本地相册, 避免重复保存同一张
- 关于请求被挂起页面加载缓慢问题的追查(stalled 时间过长)
- python_subprocess
- POJ 1493 Machined Surfaces G++
- DIRECTORY_SEPARATOR获取当前系统在目录分隔符
- Redis-Cluster集群整合SpringCache