Android IntentService详解

一、IntentService简介
IntentService是Service的子类,比普通的Service增加了额外的功能。先看Service本身存在两个问题:
二、IntentService特征
三、使用步骤(详情参考Service项目)
继承IntentService类,并重写onHandleIntent()方法即可;
MainActivity.Java文件
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void startService(View source) {
// 创建所需要启动的Service的Intent
Intent intent = new Intent(this, MyService.class);
startService(intent);
}
public void startIntentService(View source) {
// 创建需要启动的IntentService的Intent
Intent intent = new Intent(this, MyIntentService.class);
startService(intent);
}
}
MyIntentService.java文件
public class MyIntentService extends IntentService {
public MyIntentService() {
super("MyIntentService");
}
@Override
protected void onHandleIntent(Intent intent) {
// IntentService会使用单独的线程来执行该方法的代码
// 该方法内执行耗时任务,比如下载文件,此处只是让线程等待20秒
long endTime = System.currentTimeMillis() + 20 * 1000;
System.out.println("onStart");
while (System.currentTimeMillis() < endTime) {
synchronized (this) {
try {
wait(endTime - System.currentTimeMillis());
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
System.out.println("----耗时任务执行完成---");
}
}
MyService.java文件
public class MyService extends Service {
@Override
public IBinder onBind(Intent arg0) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// 该方法内执行耗时任务可能导致ANR(Application Not Responding)异常
long endTime = System.currentTimeMillis() + 20 * 1000;
System.out.println("onStart");
while (System.currentTimeMillis() < endTime) {
synchronized (this) {
try {
wait(endTime - System.currentTimeMillis());
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
System.out.println("----耗时任务执行完成---");
return START_STICKY;
}
}
运行上述代码,启动MyIntentService的会使用单独的worker线程,因此不会阻塞前台的UI线程;而MyService会。
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# Android
# IntentService
# IntentService详解
# IntentService实例代码
# Android Service类与生命周期详细介绍
# 详解Android中的Service
# Android 如何保证service在后台不被kill
# android使用NotificationListenerService监听通知栏消息
# Android实现微信自动向附近的人打招呼(AccessibilityService)
# Android AccessibilityService实现微信抢红包插件
# Android Service中使用Toast无法正常显示问题的解决方法
# Android基于service实现音乐的后台播放功能示例
# Android Service的启动过程分析
# 也不
# 子类
# 希望能
# 重写
# 谢谢大家
# 所需要
# 先看
# 多线程
# 与它
# 增加了
# 完成后
# 是专门
# brush
# strong
# java
# MainActivity
相关文章:
如何用美橙互联一键搭建多站合一网站?
建站之星备案流程有哪些注意事项?
招贴海报怎么做,什么是海报招贴?
建站主机核心功能解析:服务器选择与网站搭建流程指南
如何通过商城免费建站系统源码自定义网站主题?
北京网站制作公司哪家好一点,北京租房网站有哪些?
魔毅自助建站系统:模板定制与SEO优化一键生成指南
孙琪峥织梦建站教程如何优化数据库安全?
免费网站制作appp,免费制作app哪个平台好?
深圳企业网站制作设计,在深圳如何网上全流程注册公司?
网站企业制作流程,用什么语言做企业网站比较好?
c++ stringstream用法详解_c++字符串与数字转换利器
,怎么用自己头像做动态表情包?
香港服务器如何优化才能显著提升网站加载速度?
Swift中switch语句区间和元组模式匹配
如何在香港服务器上快速搭建免备案网站?
广东企业建站网站优化与SEO营销核心策略指南
如何使用Golang table-driven基准测试_多组数据测量函数效率
建站之星Pro快速搭建教程:模板选择与功能配置指南
宝塔建站助手安装配置与建站模板使用全流程解析
开心动漫网站制作软件下载,十分开心动画为何停播?
建站之星安装步骤有哪些常见问题?
如何基于PHP生成高效IDC网络公司建站源码?
香港服务器建站指南:外贸独立站搭建与跨境电商配置流程
网站制作公司广州有几家,广州尚艺美发学校网站是多少?
香港服务器租用费用高吗?如何避免常见误区?
深圳网站制作平台,深圳市做网站好的公司有哪些?
深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?
如何用已有域名快速搭建网站?
微信推文制作网站有哪些,怎么做微信推文,急?
如何破解联通资金短缺导致的基站建设难题?
如何用搬瓦工VPS快速搭建个人网站?
Android自定义控件实现温度旋转按钮效果
如何批量查询域名的建站时间记录?
创业网站制作流程,创业网站可靠吗?
ppt制作免费网站有哪些,ppt模板免费下载网站?
专业网站制作企业网站,如何制作一个企业网站,建设网站的基本步骤有哪些?
整人网站在线制作软件,整蛊网站退不出去必须要打我是白痴才能出去?
如何用景安虚拟主机手机版绑定域名建站?
如何在腾讯云服务器快速搭建个人网站?
宝塔新建站点报错如何解决?
武清网站制作公司,天津武清个人营业执照注销查询系统网站?
完全自定义免费建站平台:主题模板在线生成一站式服务
如何高效搭建专业期货交易平台网站?
如何在Golang中指定模块版本_使用go.mod控制版本号
免费ppt制作网站,有没有值得推荐的免费PPT网站?
如何做网站制作流程,*游戏网站怎么搭建?
广州网站建站公司选择指南:建站流程与SEO优化关键词解析
Thinkphp 中 distinct 的用法解析
如何在Golang中使用replace替换模块_指定本地或远程路径
*请认真填写需求信息,我们会在24小时内与您取得联系。