android aidl和普通service
最近看了任医生的《Android艺术开发探索》感觉收获颇丰。所以也想记录一下博客,因为写博客觉的确实是积累和总结的过程。好了,废话不多说了。
service总共分为2种,一种是普通service,就是直接继承Service的类,比较简单。主要注意的是这个类运行在主线程的,不能做耗时的工作。如果需要做耗时的工作就需要另外开启i一个线程了。
根据官方文档对service的基础方法的解释:
onStartCommand():当其他的组件调用startService()方法的时候,这个方法会调用一次,并在后台运行。如果你实现了找个方法,你有必要在这个方法完成之后调用stopSelf或者stopService(如果你仅仅想获取binding可以不必实现这个方法)。这个也是基础service进行工作的方法,把你要实现的功能写在这里。有一点要注意,当你是通过bindService开启服务的时候,这个方法是不会被调用的
onStartCommand回调方法还有一个返回值,返回值系统总共给了3个:
1、START_NOT_STICKY 这个值文档上说是系统不会轻易在你工作未完成前杀死这个服务。是一个相对安全的值。系统不会重新创建这个服务
2、START_STICKY 当我们返回这个值的时候,会重新创建这个服务,不过不会再传递intent对象了。这个比较适合多媒体播放
onBind():当其他组件想要与这个service绑定的话(例如实现远程协议调用RPC),在这个方法实现里你必须提供IBinder接口来和客户端通信。 要实现跨进程通信必须要实现的方法
onCreate():当这个服务第一次创建的时候系统回调,可以在这里做一些初始化工作
onDestroy():当服务被销毁的时候,系统回调,做一些释放内存的操作
还有一种也可以实现Service的功能,就是IntentService,这个和上面的不同之处在于,这个我们要在onHandleIntent.方法里进行操作。而且这个回调是可以进行耗时操作的。
下面说说启动服务,启动服务主要两种方式,第一种是startService,当我们启动一个实现了onStartCommand服务之后,onCreate之后调用一次,并且再次启动不会调用该方法。
转载于:https://blog.51cto.com/wangjinxue/1714734
android aidl和普通service相关推荐
- Android之四大组件(Service的开启与关闭)
个人开发的微信小程序,目前功能是书籍推荐,后续会完善一些新功能,希望大家多多支持! 前言 服务(Service)是Android系统中的四大组件之一.服务主要用于两个目的:后台运行和跨进程访问.通过启 ...
- [转]Android中程序与Service交互的方式——交互方式
本文转自:http://blog.csdn.net/yihongyuelan/article/details/7216188 上一篇文章:Android中程序与Service交互的方式--综述 简述了 ...
- Android AIDL的实现
2019独角兽企业重金招聘Python工程师标准>>> AIDL (Android Interface Definition Language) 是一种IDL 语言,用于生成可以在A ...
- Android AIDL使用介绍(3) 浅说AIDL背后的Binder
1.背景 在前面的博客中,我们已经学会了使用AIDL进行跨进程通信,AIDL的使用比较简单,可实际上跨进程通信是一个相当复杂的过程,例如进程A是怎么找到进程B的,如果有一个进程C冒充进程A,进程B又该 ...
- Android AIDL使用介绍(2)自定义数据类型的传递
1.背景 默认情况下,AIDL只支持下列数据类型: Java八种基础数据类型(如 int.long.char.boolean 等); String字符串: CharSequence字符序列: List ...
- Android AIDL使用介绍(1)基本使用
1.什么是AIDL AIDL全称是Android Interface Definition Language,中文译为Android接口定义语言,AIDL的提出是为了解决进程间通讯,我们知道,在And ...
- android java service_[Java教程]Android四大组件之Service浅见
[Java教程]Android四大组件之Service浅见 0 2014-04-04 18:00:28 Service 是Android四大组件之一,可以在不显示界面的情况下在后台运行.还有一个作用是 ...
- Android AIDL使用详解
一.概述 AIDL 意思即 Android Interface Definition Language,翻译过来就是Android接口定义语言,是用于定义服务器和客户端通信接口的一种描述语言,可以拿来 ...
- ANDROID AIDL 1
也可参考:http://buaadallas.blog.51cto.com/399160/372090 的Android AIDL(Android Interface Definition Langu ...
最新文章
- 高效并发处理之libevent
- 计算机实践报告800字,计算机软件专业大学生社会实践报告800字
- NET问答: 如何从 string 中挖出所有的 number ?
- 数据库基础知识——初始MySQL
- 正则表达式简单语法及常用正则表达式
- 解决python在pycharm中可以import本地文件,但命令行运行时报错:no model named xxxx本地文件
- php注入类,简单实用的PHP防注入类实例_PHP
- (转)收集 Spring Boot 相关的学习资料,Spring Cloud点这里 重点推荐:Spring Boot 中文索引...
- TFS小记(3):建立团队项目
- HTML 编辑器推荐
- 载入java VM时windows出现错误:2 的解决方法
- Win10如何ping端口是否开放
- ie8和ie11的html代码生成,ie8升级ie11-IE11,IE8
- Python实现熵权法(正负指标)并计算综合评分—————附增完整代码和测试用例
- Excel对比数据差异方法总结
- python中英文古风排版_古风排版 - Calculus9 - 博客园
- Tera Term (串口工具)永久保存设置的字体和框体大小
- 计算机科学家 本科专业,纽芬兰纪念大学计算机科学本科专业介绍及课程设置...
- 日本房地产泡沫经验及其借鉴
- 天猫精灵--智能家居接入(一)
热门文章
- vue-count-to插件使用方法
- php和js搜索框,利用PHP+JS实现搜索自动提示(实例)_php技巧
- Java中判断一个字符串全为数字和字母
- m-qam matlab,基于matlab的M_QAM通信系统仿真.doc
- python采集代理ip_Python采集代理ip并判断是否可用和定时更新的方法
- shell调用hive客户端导致nohup后台进程stopped
- ant部署web工程模板
- 布林通道参数用20还是26_布林通道(BOLL)策略的投资效果如何?
- Oracle索引扫描方式
- mac ---- 安装ftp服务器