- 浏览: 7943100 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (2425)
- 软件工程 (75)
- JAVA相关 (662)
- ajax/web相关 (351)
- 数据库相关/oracle (218)
- PHP (147)
- UNIX/LINUX/FREEBSD/solaris (118)
- 音乐探讨 (1)
- 闲话 (11)
- 网络安全等 (21)
- .NET (153)
- ROR和GOG (10)
- [网站分类]4.其他技术区 (181)
- 算法等 (7)
- [随笔分类]SOA (8)
- 收藏区 (71)
- 金融证券 (4)
- [网站分类]5.企业信息化 (3)
- c&c++学习 (1)
- 读书区 (11)
- 其它 (10)
- 收藏夹 (1)
- 设计模式 (1)
- FLEX (14)
- Android (98)
- 软件工程心理学系列 (4)
- HTML5 (6)
- C/C++ (0)
- 数据结构 (0)
- 书评 (3)
- python (17)
- NOSQL (10)
- MYSQL (85)
- java之各类测试 (18)
- nodejs (1)
- JAVA (1)
- neo4j (3)
- VUE (4)
- docker相关 (1)
最新评论
-
xiaobadi:
jacky~~~~~~~~~
推荐两个不错的mybatis GUI生成工具 -
masuweng:
(转)JAVA获得机器码的实现 -
albert0707:
有些扩展名为null
java 7中可以判断文件的contenttype了 -
albert0707:
非常感谢!!!!!!!!!
java 7中可以判断文件的contenttype了 -
zhangle:
https://zhuban.me竹板共享 - 高效便捷的文档 ...
一个不错的网络白板工具
在Android的应用中,往往需要在执行主界面的操作时,如果要执行耗时的操作,那么应该是另外开线程的,或者是用async或者handler,今天发现其实也可以用android中的一个Intentservice去实现。下面例子讲解下。
1 例子中是一个文本框,当用户输入内容后,模拟slepp 10秒,这个时候要是不分离线程,操作的话,用户再点界面,就会死死地停在那里,甚至是出现提示,要强行CLOSE,代码如下:
2 下面是使用IntentService
首先,我们搞一个类SimpleIntentService,继承了IntentService
我们将跟主界面线程分离的操作都写在这里的ononHandleIntent中,这里首先通过
主线程传递的Intent中,获得用户文本框中输入的内容,放到变量msg中,然后
又建立一个Intent,把结果放到这个Intent中去,然后再sendBroadcast(broadcastIntent)广播出去,丢回给主线程。
3 在主线程中,这样启动:
4 同时,在主线程中,也要有一个receive接收
当然,要注册这个broadcastReceiver,
可以看到,intent service还是比较清晰简单的,但至于性能方面,还是要继续学习,
迟点继续研究下这玩意哦
1 例子中是一个文本框,当用户输入内容后,模拟slepp 10秒,这个时候要是不分离线程,操作的话,用户再点界面,就会死死地停在那里,甚至是出现提示,要强行CLOSE,代码如下:
EditText input = (EditText) findViewById(R.id.txt_input); String strInputMsg = input.getText().toString(); SystemClock.sleep(30000); // 30 seconds, pretend to do work TextView result = (TextView) findViewById(R.id.txt_result); result.setText(strInputMsg + " " + DateFormat.format("MM/dd/yy h:mmaa", System.currentTimeMillis()));
2 下面是使用IntentService
首先,我们搞一个类SimpleIntentService,继承了IntentService
public class SimpleIntentService extends IntentService { public static final String PARAM_IN_MSG = "imsg"; public static final String PARAM_OUT_MSG = "omsg"; public SimpleIntentService() { super("SimpleIntentService"); } @Override protected void onHandleIntent(Intent intent) { String msg = intent.getStringExtra(PARAM_IN_MSG); SystemClock.sleep(3000); // 30 seconds String resultTxt = msg + " " + DateFormat.format("MM/dd/yy h:mmaa", System.currentTimeMillis()); Log.v("SimpleIntentService", "Handling msg: " + resultTxt); Intent broadcastIntent = new Intent(); broadcastIntent.setAction(ResponseReceiver.ACTION_RESP); broadcastIntent.addCategory(Intent.CATEGORY_DEFAULT); broadcastIntent.putExtra(PARAM_OUT_MSG, resultTxt); sendBroadcast(broadcastIntent); }
我们将跟主界面线程分离的操作都写在这里的ononHandleIntent中,这里首先通过
主线程传递的Intent中,获得用户文本框中输入的内容,放到变量msg中,然后
又建立一个Intent,把结果放到这个Intent中去,然后再sendBroadcast(broadcastIntent)广播出去,丢回给主线程。
3 在主线程中,这样启动:
EditText input = (EditText) findViewById(R.id.txt_input); String strInputMsg = input.getText().toString(); Intent msgIntent = new Intent(this, SimpleIntentService.class); msgIntent.putExtra(SimpleIntentService.PARAM_IN_MSG, strInputMsg); startService(msgIntent);
4 同时,在主线程中,也要有一个receive接收
public class ResponseReceiver extends BroadcastReceiver { public static final String ACTION_RESP = "com.mamlambo.intent.action.MESSAGE_PROCESSED"; @Override public void onReceive(Context context, Intent intent) { // Update UI, new "message" processed by SimpleIntentService TextView result = (TextView) findViewById(R.id.txt_result); String text = intent.getStringExtra(SimpleIntentService.PARAM_OUT_MSG); result.setText(text); } }
当然,要注册这个broadcastReceiver,
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); IntentFilter filter = new IntentFilter(ResponseReceiver.ACTION_RESP); filter.addCategory(Intent.CATEGORY_DEFAULT); receiver = new ResponseReceiver(); registerReceiver(receiver, filter); }
可以看到,intent service还是比较清晰简单的,但至于性能方面,还是要继续学习,
迟点继续研究下这玩意哦
发表评论
-
『Google发布移动Web性能工具PCAP Web Performance Analyzer』
2015-01-06 14:17 2239http://t.cn/RZcCwZS 最近,Google的 ... -
(收藏)在WebView中如何让JS与Java安全地互相调用
2014-11-11 09:59 873在WebView中如何让JS与Java安全地互相调用 http ... -
android中的两端对齐
2013-02-08 18:58 3151在android中的webview中,可以对文本内容进行对 ... -
jQuery Mobile十大常用技巧
2012-10-12 07:23 4276原文发表在: http://mobile.51cto.com/ ... -
Android中使用log4j
2012-10-09 20:22 18334如果要直接在android工程中使用log4j,是有点问题 ... -
收集android的三个小tip
2012-08-25 11:24 2151收集android的三个小tip 1)Android 开发中 ... -
andorid中的html.fromhtml方法
2012-08-19 21:24 8852在android中,有一个容易遗忘的Html.fromht ... -
一个不错的sencha touch MVC教程分享
2012-08-18 10:06 2870http://blog.csdn.net/fyq891014/ ... -
jquery mobile中的按钮大集合
2012-08-14 22:17 3940本文小结了jquery mobile ... -
Andrid中的plurals
2012-08-10 19:29 1757在Android中的字符串资源中,今天留意到一个很特别的东 ... -
Android中listview中的button
2012-08-08 12:56 1983在androd中的listview中,假如每一项是个buu ... -
如何有更好的Android应用创意--从一款新Android应用说起
2012-07-20 14:23 5721现在这个年头,Android ... -
android中判断网络是否连接
2012-07-12 23:19 2941在android中,如何监测网络的状态呢,这个有的时候也是十分 ... -
android中设置手机的语言系
2012-05-19 15:55 2762adb shell 进入Android的Shell,输入以下命 ... -
android 按钮设计中state_selected属性
2012-05-15 22:33 8508在android中,如果搞几个tab,然后想做到当移动到某个T ... -
android中从图库中选取图片
2012-05-11 21:03 10289在android中,如何从图库gallary中挑选图片呢, ... -
android 模拟器中启用相机API支持
2012-05-10 22:37 3190android 模拟器中启用相机支持,否则如果应用中用到相关的 ... -
(转)向android模拟器打电话发短信的简单方法
2012-04-13 13:00 2005http://blog.csdn.net/pku_androi ... -
android 中让activity全屏幕显示
2012-04-12 09:06 1688android 中让activity全屏幕显示,这是一个小ti ... -
在Android中加入GOOGLE统计系统
2012-03-31 20:43 3467Google的统计分析系统,不仅在传统WEB统计中应用很广 ...
相关推荐
service中1需要手动开启子线程2服务开启之后会一直运行,需要手动调用stopService();或者stopSelf(); intentService是一种异步(子线程)、自动停止的服务,这个例子测试IntentService的特征
1. 自带工作线程:IntentService内部维护了一个工作线程,当我们需要执行耗时操作时,可以直接在IntentService中进行,而不用担心会影响主线程的UI更新。 2. 单线程处理:尽管可以多次通过startService启动...
在Android应用开发中,IntentService的主要特点和优势包括: 1. 单线程执行:IntentService内部使用了一个工作队列,保证了所有任务按照顺序逐一执行,避免了多线程并发导致的竞态条件。 2. 自动启动与停止:当...
IntentService是Android系统中一种特殊的Service,它是Service的子类,设计用于在后台执行单一的任务,然后自动停止服务,不需要手动调用stopSelf()。IntentService的使用极大地简化了后台异步任务处理,并且保证了...
IntentService是Android操作系统中一种特殊的Service子类,它主要用于处理那些需要后台运行的单个任务,比如网络请求、数据同步等。与普通的Service相比,IntentService具有更好的线程管理和任务调度机制,使得...
总之,Android中的Service和IntentService是实现后台操作的重要手段,它们为开发者提供了在没有用户界面的情况下执行长时间任务的能力。理解并熟练使用它们,将有助于构建更加健壮和高效的应用程序。
2. 自动启动和停止:当IntentService中的工作队列为空时,系统会自动停止该服务,无需手动调用stopSelf()方法。 3. 非阻塞UI:由于IntentService的所有工作都在后台线程进行,因此不会影响主线程,保证了用户界面的...
在Android应用开发中,IntentService是一个非常重要的组件,它继承自Service,并且简化了后台服务的处理流程。IntentService主要用于执行单一的任务或者一系列串行任务,而不会长时间占用主线程,提高了应用的响应...
在Android应用开发中,`Service`和`IntentService`是两个关键组件,它们用于在后台执行长时间运行的任务,不依赖于用户界面。本篇将详细阐述`Service`和`IntentService`的用法以及需要注意的要点。 首先,我们来...
}IntentService是Android系统提供的一个特殊类型的Service,它的设计目的是处理一次性任务,特别是那些可能会花费很长时间的操作,如网络通信或大文件下载。IntentService的特性使其特别适合于在后台执行这些任务,...
在Android开发中,IntentService是一个特殊的Service子类,它的设计主要目的是为了简化异步任务的执行,特别是那些一次性、不需要用户交互的任务。IntentService的主要特点在于它会自动管理线程和消息队列,使得...
Android IntentService详解 一、IntentService简介 IntentService是Service的子类,比普通的Service增加了额外的功能。先看Service本身存在两个问题: Service不会专门启动一条单独的进程,Service与它所在...
在Android开发中,IntentService是一种特殊的Service,专为执行单一且异步的任务而设计,尤其适合处理耗时操作,如上传或下载数据。本案例主要关注如何使用IntentService来模拟上传图片。 IntentService的主要特点...
在Android系统中,应用需要获取相应的权限才能访问相机硬件。在Android 6.0(API级别23)及以上版本,用户在安装应用时或首次使用某些功能时会被要求授予“CAMERA”权限。因此,开发者需要在`AndroidManifest.xml`...
其他生命周期方法如onCreate()、onStartCommand()等已经在IntentService中进行了默认实现,无需额外关注。 4. **单线程模型**:IntentService遵循先进先出(FIFO)的模型,确保Intent的处理顺序,避免了并发问题。 ...
Android 中的 IntentService 是一种特殊的服务组件,它可以在 worker 线程中执行长时间运行的操作,而不需要在主线程中执行,从而避免了界面卡顿的问题。在 APK 更新示例代码中,IntentService 被用来进行 APK 的...
在Android开发中,IntentService是一种特殊类型的Service,它主要用于执行后台任务,比如网络请求、数据同步等。IntentService的设计理念是让服务在一个单独的工作线程中运行,避免阻塞主线程,提供了一种有序处理...