- 浏览: 939019 次
- 性别:
- 来自: 重庆
文章分类
- 全部博客 (453)
- Windows phone 7 (0)
- Andriod (47)
- iPhone (1)
- Web (30)
- J2EE (34)
- stucts 2学习笔记 (34)
- 开发项目 (3)
- spring学习笔记 (24)
- EJB学习笔记 (6)
- Hibernate学习笔记 (15)
- JPA学习笔记 (8)
- Jsp (11)
- ajax (7)
- 异常收集模块 (1)
- jquery (2)
- phoneGap (2)
- jquery Mobile (0)
- java面试总结 (5)
- Object-C (0)
- javascript (6)
- Eclipse (5)
- 支付集成 (2)
- Weblogic (1)
- Dubbox (5)
- Redis (10)
- linux (21)
- Codis (2)
- React Native (0)
- Mysql (6)
- Docker (3)
- 自动化部署 (1)
- 项目Bug管理平台 (2)
- 负载均衡 (1)
- Mycat (2)
- Java基础知识 (16)
- 数据库 (7)
- Maven (17)
- Kafka (21)
- logs (2)
- 大并发 (2)
- 消息中间件 (2)
- 分布式锁 (3)
- 算法 (4)
- 数字证书原理,公钥私钥 (0)
- 数字证书原理 (1)
- 公钥私钥 (1)
- zookeeper (4)
- Hbase (9)
- Hadoop (2)
- storm (2)
- 通信协议 (1)
- Hive (3)
- git (1)
- JVM (2)
- 大数据相关算法 (1)
- idea (5)
- 将博客搬至CSDN (1)
- 设计模式 (2)
- 表达式 (1)
- 代码审查工具 (0)
- 开源项目 (1)
- PyCharm (0)
- python (6)
- Kubernetes (1)
- swagger (1)
- Maven中mirrors和repository的关系 (0)
- RabbitMQ (3)
- redisson (1)
- k8s (2)
- Mac (1)
最新评论
-
misisipi101:
假设库已经分为32个,那么要扩展到64个,怎样做呢
订单分库分表实践总结以及关键步骤 -
mfkxk298:
简单明了的例子,解决了问题,谢谢啦!
关于ListView中notifyDataSetChanged()刷新数据不更新原因 -
whbwang:
" target="_blank" ...
java web开发 高并发处理 -
suguoqian:
...
java web开发 高并发处理 -
xiangnanyujing:
Dubbox+Redis3.0+Spring+Hibernate+zookeeper实现消息推送核心搭建
不知道大家有没有和我一样,以前做项目或者练习的时候一直都是用Service来处理后台耗时操作,却很少注意到还有个IntentService,前段时间准备面试的时候看到了一篇关于IntentService的解释,发现了它相对于Service来说有很多更加方便之处,今天在这里稍微来总结下我的心得。
首先IntentService是继承自Service的,那我们先看看Service的官方介绍,这里列出两点比较重要的地方:
1.A Service is not a separate process. The Service object itself does not imply it is running in its own process; unless otherwise specified, it runs in the same process as the application it is part of.
2.A Service is not a thread. It is not a means itself to do work off of the main thread (to avoid Application Not Responding errors).
稍微翻一下(英文水平一般)
1.Service不是一个单独的进程 ,它和应用程序在同一个进程中。
2.Service不是一个线程,所以我们应该避免在Service里面进行耗时的操作
关于第二点我想说下,不知道很多网上的文章都把耗时的操作直接放在Service的onStart方法中,而且没有强调这样会出现Application Not Responding!希望我的文章能帮大家认清这个误区(Service不是一个线程,不能直接处理耗时的操作)。
有人肯定会问,那么为什么我不直接用Thread而要用Service呢?关于这个,大家可以网上搜搜,这里不过多解释。有一点需要强调,如果有耗时操作在Service里,就必须开启一个单独的线程来处理!!!这点一定要铭记在心。
IntentService相对于Service来说,有几个非常有用的优点,首先我们看看官方文档的说明:
IntentService is a base class for Services that handle asynchronous requests (expressed as Intents) on demand. Clients send requests throughstartService(Intent) calls; the service is started as needed, handles each Intent in turn using a worker thread, and stops itself when it runs out of work.
This "work queue processor" pattern is commonly used to offload tasks from an application's main thread. The IntentService class exists to simplify this pattern and take care of the mechanics. To use it, extend IntentService and implement onHandleIntent(Intent). IntentService will receive the Intents, launch a worker thread, and stop the service as appropriate.
All requests are handled on a single worker thread -- they may take as long as necessary (and will not block the application's main loop), but only one request will be processed at a time.
1.Service:
|
2.IntentService:
|
测试主程序:
|
发表评论
-
App开发一些总结
2016-04-05 17:48 2600架构因人而异,不同的架构师大多会有不同的看法;架构也因项目 ... -
java 实现微信搜索附近人功能
2015-03-25 18:07 4932最近给andorid做后台查询数据功能,有一个需求是模仿微信 ... -
重庆APP开发 重庆Android 重庆Ios 爬虫科技 重庆爬虫科技
2014-10-06 12:03 9<!--[if gte mso 9]><x ... -
android 操作文件
2012-08-30 11:15 1055package com.liyong; import jav ... -
android获取短信内容
2012-08-29 23:10 1566自己研究: package com.liyong.data; ... -
Android中的日历操作
2012-08-29 13:01 3022日历的操作方法,这里主要用到了ContentProiver的知 ... -
android获取CMNET、WIFI、CMWAP联网状态
2012-08-29 12:40 5868private static final int CMNET= ... -
android实现手势缩放、移动图片
2012-08-28 19:37 9288新建一个触摸监听器类 package com.liyong. ... -
怎样把信息绘制到图片中并且保存到本地硬盘上
2012-08-27 12:53 1380自己研究吧。。。 //解释一下由于我们不是绘制到手机屏幕上所 ... -
关于ListView中notifyDataSetChanged()刷新数据不更新原因
2012-08-26 21:41 50333使用Listview的时候: 当要动态显示更改后的数据(例如数 ... -
android中获取联系人相关信息
2012-08-26 18:42 1687自己看........... public static ... -
修改Android中strings.xml文件, 动态改变数据
2012-08-24 18:25 10855有些朋友可能会动态的修改Android中strings.xml ... -
android内存泄漏
2012-07-25 21:04 1713尽量不要使用setImageBitmap或setImageRe ... -
将程序安装到SD卡
2012-04-28 22:11 886Android 2.2系统的一大改进就是通过Move to S ... -
一个很好的加密解密字符串
2012-04-28 22:11 1141package net.sf.andhsli.hotspotl ... -
获取手机位置
2012-04-28 22:11 1012private double[] getGPS() { Lo ... -
获取手机位置
2012-05-04 09:39 1106private double[] getGPS() { Lo ... -
查看内存存储
2012-05-03 10:05 1098import java.io.File; import a ... -
获取本机电话号码
2012-05-03 10:04 1119private String getMyPhoneNumber ... -
发送彩信
2012-05-03 10:04 1015Uri uri = Uri.parse(\"cont ...
相关推荐
service中1需要手动开启子线程2服务开启之后会一直运行,需要手动调用stopService();或者stopSelf(); intentService是一种异步(子线程)、自动停止的服务,这个例子测试IntentService的特征
在Android开发中,服务(Service)是用于在后台执行长时间运行操作的重要组件,不与用户界面直接交互。本文将深入探讨“Service”和其子类“IntentService”的使用,结合提供的标签“源码”和“工具”,我们将侧重于...
在Android应用开发中,`Service`和`IntentService`是两个关键组件,它们用于在后台执行长时间运行的任务,不依赖于用户界面。本篇将详细阐述`Service`和`IntentService`的用法以及需要注意的要点。 首先,我们来...
在实际开发中,当需要在后台进行一系列有序操作且不需要与客户端交互时,使用IntentService是一个理想的选择。 总结来说,Service是Android系统中用于后台运行任务的基础,但需要开发者手动处理线程和生命周期管理...
在Android应用开发中,IntentService是一个非常重要的组件,它继承自Service类,专门用于执行后台的单线程任务,尤其适合处理那些可能阻塞主线程的操作,如网络请求、文件下载等。IntentService的设计旨在避免主线程...
3. 在ServiceDemoActivity.java中都调用了两个service,调用service自行屏蔽调用IntentServiceServie,调用IntentServiceServie自行屏蔽调用service。 4. 仅仅是个例子,对比这个service和IntentServiceServie的区别...
IntentService是Android系统中一种特殊的Service,它是Service的子类,设计用于在后台执行单一的任务,然后自动停止服务,不需要手动调用stopSelf()。IntentService的使用极大地简化了后台异步任务处理,并且保证了...
5. **IntentService与普通Service的区别** - 普通Service默认在主线程运行,需要开发者手动处理线程和任务调度;IntentService在工作线程中处理任务,避免了主线程阻塞。 - 普通Service需要开发者手动停止,而...
IntentService的使用既简单又高效,能够确保工作在安全的环境中,避免内存泄漏和线程安全问题。 在Android应用开发中,IntentService的主要特点和优势包括: 1. 单线程执行:IntentService内部使用了一个工作队列...
IntentService是Android操作系统中一种特殊的Service子类,它主要用于处理那些需要后台运行的单个任务,比如网络请求、数据同步等。与普通的Service相比,IntentService具有更好的线程管理和任务调度机制,使得...
在Android开发中,Service是四大组件之一,它在后台运行,不与用户界面直接交互,常用于执行长时间的任务,如播放音乐、网络通信等。本篇文章将深入解析"android service 简单实例源代码",帮助你理解如何在Android...
为避免这种情况,通常建议在Service中使用IntentService或HandlerThread来处理后台任务,确保操作在单独的工作线程中执行。 6. Service的启动与停止 - 启动服务:使用startService()启动Service,通过stopService...
Service不会专门启动一条单独的进程,Service与它所在应用位于同一个进程中; Service也不是专门一条新线程,因此不应该在Service中直接处理耗时的任务; 二、IntentService特征 会创建独立的worker线程来...
- 尽量避免在主线程中进行耗时操作,使用IntentService或在Service中开启新的工作线程。 - 绑定Service时,确保在Activity的onDestroy()中解绑,防止内存泄漏。 - 如果只是需要在后台执行一次性任务,优先考虑...
在这个描述中,可能是使用了标准Service,因为IntentService会自动处理工作线程并结束自身,而这里需要在用户退出时手动停止音乐播放。 创建一个Service通常涉及以下步骤: 1. 创建一个新的Service类,继承自`...
在【标题】"IntentService实现,使用代码"和【描述】"一个IntentService的简单使用"中,我们可以深入探讨IntentService的基本概念、优点、工作原理以及如何在实际项目中使用。 1. **IntentService基本概念** ...
1)Service默认运行在主线程中,IntentService运行在一个新的线程中 2)Service需要主动调用stopSelf()或stopService()服务才可以停止,IntentService运行完后自动停止 使用IntentService需要注意2点: 1)构造函数中...