2 sinat 32057739 sinat_32057739 于 2016.01.15 15:47 提问

android handler runnable队列问题

现在我这边要执行多个异步任务,但是这几个任务又不想让他们互相影响,
现在我new一个handler的话,把runnable放入队列中之后,他们应该是一个个来执行的吧,也就是说如果有一个卡住了,其他的就执行不了了,但是我想如果其中一个执行失败,其他的也要执行
这种情况,是否可以用多个handler的方法来解决,有没有更好的解决方案

13个回答

CSDNXIAON
CSDNXIAON   2016.01.15 15:49

Android中Handler Runnable与Thread的区别
----------------------同志你好,我是CSDN问答机器人小N,奉组织之命为你提供参考答案,编程尚未成功,同志仍需努力!

xxjdt
xxjdt   2016.01.15 16:28

异步任务本来不就是独立的吗,还处理什么

danielinbiti
danielinbiti   Ds   Rxr 2016.01.15 16:32

使用AsyncTask
或者
在线程中Loop.prepare,也就是每个thread中重新构建一个消息机制
或者
在handlemessage中采用启动thread的方式异步执行。

shen_92_yang
shen_92_yang   2016.01.16 09:36

异步任务本来就是互相不干扰,Handler中因为存在UI主线程所有基本不做耗时处理

纠正一点,消息队列不属于Handler,属于UI主线程,也就是说你new 100个handler 也是向一个消息队列发送消息

至于你说的一个处理失败,其他的也要执行,这更是必须的,因为UI主线成不允许5S以上的耗时操作,否则直接ANR

shen_92_yang
shen_92_yang   2016.01.16 09:36

异步任务本来就是互相不干扰,Handler中因为存在UI主线程所有基本不做耗时处理

纠正一点,消息队列不属于Handler,属于UI主线程,也就是说你new 100个handler 也是向一个消息队列发送消息

至于你说的一个处理失败,其他的也要执行,这更是必须的,因为UI主线成不允许5S以上的耗时操作,否则直接ANR

shen_92_yang
shen_92_yang   2016.01.16 09:36

异步任务本来就是互相不干扰,Handler中因为存在UI主线程所有基本不做耗时处理

纠正一点,消息队列不属于Handler,属于UI主线程,也就是说你new 100个handler 也是向一个消息队列发送消息

至于你说的一个处理失败,其他的也要执行,这更是必须的,因为UI主线成不允许5S以上的耗时操作,否则直接ANR

shen_92_yang
shen_92_yang   2016.01.16 09:36

异步任务本来就是互相不干扰,Handler中因为存在UI主线程所有基本不做耗时处理

纠正一点,消息队列不属于Handler,属于UI主线程,也就是说你new 100个handler 也是向一个消息队列发送消息

至于你说的一个处理失败,其他的也要执行,这更是必须的,因为UI主线成不允许5S以上的耗时操作,否则直接ANR

shen_92_yang
shen_92_yang   2016.01.16 09:36

异步任务本来就是互相不干扰,Handler中因为存在UI主线程所有基本不做耗时处理

纠正一点,消息队列不属于Handler,属于UI主线程,也就是说你new 100个handler 也是向一个消息队列发送消息

至于你说的一个处理失败,其他的也要执行,这更是必须的,因为UI主线成不允许5S以上的耗时操作,否则直接ANR

shen_92_yang
shen_92_yang   2016.01.16 09:36

异步任务本来就是互相不干扰,Handler中因为存在UI主线程所有基本不做耗时处理

纠正一点,消息队列不属于Handler,属于UI主线程,也就是说你new 100个handler 也是向一个消息队列发送消息

至于你说的一个处理失败,其他的也要执行,这更是必须的,因为UI主线成不允许5S以上的耗时操作,否则直接ANR

shen_92_yang
shen_92_yang   2016.01.16 09:36

异步任务本来就是互相不干扰,Handler中因为存在UI主线程所有基本不做耗时处理

纠正一点,消息队列不属于Handler,属于UI主线程,也就是说你new 100个handler 也是向一个消息队列发送消息

至于你说的一个处理失败,其他的也要执行,这更是必须的,因为UI主线成不允许5S以上的耗时操作,否则直接ANR

共13条数据 1 尾页
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Handler将Runnable放入线程队列,removecallback()移除Runnable
下面是小demO public class MainActivity extends Activity { private Handler handler; private Runnable runnable; private int i=0; private Button button1; private Button button2;
Runnable接口实现线程,Handler消息队列更新UI
在Android中不允许Activity新启动的线程访问该Activity里的UI组件 而一般一个activity中需要由多个线程来完成不同任务,然后更新UI;比如我们使用手机在线听音乐,它要一边缓冲一边播放,同时还要显示播放进度,这些都需要更新UI,而又很难在一个线程中完成,所以就可以通过Handler()来完成这些更新,通过创建一个handler实例,它会被绑定到创建它的线程中(通常即为主线
安卓性能优化之清除Handler的Message和Runnable
Handler是由系统所提供的一种异步消息处理的常用方式,一般情况下不会发生内存泄露. 但既然是调优,当在A_Activity中使用handler发送了几个消息,然后又跳到B_Activity,这个时候如果我们想结束之前在A_Activity中发出的消息,不再占用多余的队列空间.怎么办呢? 原来,Handler中已经提供了一个removeCallbacksAndMessages ha
Android 开发之 定时器 Handler + Runnable方式
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.other_main); //开始进行更新 selfHandler.postDelayed(runnable, 1000);
android开发笔记之handler+Runnable的一个巧妙应用
1. 一个有趣Demo: (1)定义一个handler变量 private final Handler mHandler = new Handler(); (2)定义一个Runnable变量 private Runnable onDoSomethingRunnable = new Runnable() { public void run() { onDoSom
Handler或Runnable作为非静态内部类,引发的内存泄露问题
一、Handler 和 Runnable 都有定时器的功能,当它们作为非静态内部类的时候,同样会持有外部类的引用,如果它们的内部有延迟操作,在延迟操作还没有发生的时候,销毁了外部类,那么外部类对象无法回收,从而造成内存泄漏。      假设MianActivity里面有个Handler的10秒延时操作:      Handler 和 Runnable 作为匿名内部类,都会持有 MainAc
从Handler.post(Runnable r)再一次梳理Android的消息机制(以及handler的内存泄露)
转载请注明出处http://blog.csdn.net/ly502541243/article/details/52062179 Handler 每个初学Android开发的都绕不开Handler这个“坎”,为什么说是个坎呢,首先这是Android架构的精髓之一,其次大部分人都是知其然却不知其所以然。今天看到Handler.post这个方法之后决定再去翻翻源代码梳理一下Handler的实现机制
Android -> 如何避免Handler引起内存泄露
更多内容,可访问个人博客www.liangfeizc.com 错误代码 如果在Activiy中通过内部类(Runnable)的方式定义了一个变量runnable, final Runnable runnable = new Runnable() {     public void run() {         // ... do some work     }
Android如何让Handler中内部run停止(runnable/thread)
【声明】此文转载自:http://www.bubuko.com/infodetail-669650.html ——尊重作者,知识无价,交流无限! 一、先看图片,一目了然: 二、再看代码,了然于胸: Activity代码: package com.example.mydemo; 2 3 import android.app.Activity; 4 imp
Android:实现定时器 Handler的postDelayed(Runnable, long)方法
先演示一个Demo代码。功能是每隔一秒实现Textview颜色的变化,而且是循环变化直到停止。 package com.example.handlerpost; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.app.Activity; import