IntentService的使用】的更多相关文章

IntentService是继承自Service类的,在执行耗时操作时,其实,只需要在service中的onStartCommand(主线程)新启一个线程即可,那IntentService什么时候用来会比较好呢? 我们通过startService多次启动了IntentService,这会产生多个job,由于IntentService只持有一个工作线程,所以每次onHandleIntent只能处理一个job.面多多个job,IntentService会如何处理?处理方式是one-by-one,也就…
http://developer.android.com/training/run-background-service/index.html IntentService 只是简单的对Service做了一个封装.是一个抽象类,需要实现 onHandleIntent 方法. .onCreate的时候新启了一个 HandlerThread .onStart的时候在工作线程里调用回调函数:protected abstract void onHandleIntent(Intent intent); .o…
稍微纤细一点儿的信息是: Handler (android.os.Handler) {215ddea8} sending message to a Handler on a dead thread. 在另一次在IntentService里使用MediaPlayer 播放铃声也再现错误,信息是:Handler) {42414500} sending message to a Handler on a dead thread. 本次的完整信息是: W/ActivityManager( 1394):…
HandlerThread 为什么要使用HandlerThread? 我们经常使用的Handler来处理消息,其中使用Looper来对消息队列进行轮询,并且默认是发生在主线程中,这可能会引起UI线程的卡顿,所以我们用HandlerThread来替代... HanderThread实际上就是一个线程 @Override public void run() { mTid = Process.myTid(); Looper.prepare(); synchronized (this) { mLoope…
IntentService是继承于Service并处理异步请求的一个类,在IntentService内有一个工作线程来处理耗时操作,启动IntentService的方式和启动传统Service一样,同时,当任务执行完后,IntentService会自动停止,而不需要我们去手动控制.另外,可以启动IntentService多次,而每一个耗时操作会以工作队列的方式在IntentService的onHandleIntent回调方法中执行,并且,每次只会执行一个工作线程,执行完第一个再执行第二个,以此类…
首先说下,其他概念:Android中的本地服务与远程服务是什么? 本地服务:LocalService 应用程序内部------startService远程服务:RemoteService android系统的应用程序间 ---- bindService它可以通过自己定义并暴露出来的接口进行程序操作.客户端建立一个到服务对象的连接,并通过那个连接来调用服务.连接以调用Context.bindService()方法建立,以调用 Context.unbindService()关闭.多个客户端可以绑定至…
IntentService:异步处理服务,新开一个线程:handlerThread在线程中发消息,然后接受处理完成后,会清理线程,并且关掉服务. IntentService有以下特点: (1)  它创建了一个独立的工作线程来处理所有的通过onStartCommand()传递给服务的intents. (2)  创建了一个工作队列,来逐个发送intent给onHandleIntent(). (3)  不需要主动调用stopSelft()来结束服务.因为,在所有的intent被处理完后,系统会自动关闭…
和HandlerThread一样,IntentService也是Android替我们封装的一个Helper类,用来简化开发流程的.接下来分析源码的时候 你就明白是怎么回事了.IntentService是一个按需处理用Intent表示的异步请求的基础Service类,本质上还是Android Service. 客户端通过Context#startService(Intent);这样的代码来发起一个请求.Service只在没启动的情况下启动,并且在一个worker thread 中处理所有的异步请求…
Service 中的耗时操作必须 在 Thread中进行: IntentService 则直接在 onHandleIntent()方法中进行…
一 概述 大家都清楚,在Android的开发中,凡是遇到耗时的操作尽可能的会交给Service去做,比如我们上传多张图,上传的过程用户可能将应用置于后台,然后干别的去了,我们的Activity就很可能会被杀死,所以可以考虑将上传操作交给Service去做,如果担心Service被杀,还能通过设置startForeground(int, Notification)方法提升其优先级. 那么,在Service里面我们肯定不能直接进行耗时操作,一般都需要去开启子线程去做一些事情,自己去管理Service…