博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Service
阅读量:5238 次
发布时间:2019-06-14

本文共 841 字,大约阅读时间需要 2 分钟。

引入目的:在用户没有同app交互时可运行在后台;如果目的是在交互时不打断main thread可以使用thread,分两种:

1、startService(intent):app结束后也可运行。通常执行单个操作、不返回结果。实现onStartCommand()。stopSelf()、stopService()停止。

2、bindService():所有绑定的app unbind后,service被销毁;可C-S模式的IPC,跨进程通信--发送请求、获取结果。实现onBind(),返回IBinder用于与C端交互。

3、service在main thread中运行,需执行耗时操作应该创建新thread。

4、生命周期:

  onCreate():第一次调用。

  onStartCommand()、onBind():启动、绑定服务时调用,被系统kill恢复时调用。可被多次调用。

  onDestroy():销毁调用。startedService调用一次stopSelf()、stopService()停止。boundServie全部unbindService()后调用。

5、实现startedService:

  继承原始Service类:灵活,通常需自己新建thread。

  继承IntentService类:onHandleIntent()中使用worker thread顺序处理所有Intent。

  获取service结果:使用PendingIntent、getBroadcast(),service使用broadcast提供结果。

6、创建boundService:

  目的:作为其它组件的一部分。

7、通知用户:Toast、状态栏

8、service前端运行:startForeground(状态栏通知),不易被系统kill

转载于:https://www.cnblogs.com/toven/archive/2012/08/30/2609717.html

你可能感兴趣的文章
IOS Google语音识别更新啦!!!
查看>>
[置顶] Linux终端中使用上一命令减少键盘输入
查看>>
BootScrap
查看>>
【Python学习笔记】1.基础知识
查看>>
梦断代码阅读笔记02
查看>>
selenium学习中遇到的问题
查看>>
[Linux]PHP-FPM与NGINX的两种通讯方式
查看>>
Java实现二分查找
查看>>
架构图-模型
查看>>
黑马程序员_Java基础枚举类型
查看>>
UIImage 和 iOS 图片压缩UIImage / UIImageVIew
查看>>
疯狂JAVA16课之对象与内存控制
查看>>
django ORM创建数据库方法
查看>>
php7 新特性整理
查看>>
RabbitMQ、Redis、Memcache、SQLAlchemy
查看>>
知识不是来炫耀的,而是来分享的-----现在的人们却…似乎开始变味了…
查看>>
口胡:[HNOI2011]数学作业
查看>>
数据库锁机制及乐观锁,悲观锁的并发控制
查看>>
03 线程池
查看>>
手机验证码执行流程
查看>>