Android开发之在子线程中使用Toast

在子线程中使用Toast的时候,出现Force close。

错误提示:Can‘t create handler inside thread that has not called Looper.prepare()

解决方法:

1 Looper.prepare();
2 Toast.makeText(ActivityTestActivity.this, "toast", 1).show();
3 Looper.loop();

原因:

子线程只是一个普通的线程,其ThreadLoacl中没有设置过Looper,所以会抛出异常

时间: 2024-08-01 06:02:10

Android开发之在子线程中使用Toast的相关文章

Android开发之在子线程中更新UI

转自第一行代码-Android Android是不允许在子线程中进行UI操作的.在子线程中去执行耗时操作,然后根据任务的执行结果来更新相应的UI控件,需要用到Android提供的异步消息处理机制. 代码如下: 1 public class MainActivity extends Activity implements OnClickListener { 2 private static final int UPDATE_TEXT=1; 3 private TextView textView;

在子线程中使用Toast

网上找了好久,大部分的解决办法是:在Toast前面和后面分别加Looper.prepare();与Looper.loop(); ,但是这种方法的不足之处是代码运行到此处时就不往下运行了,格式及用法如下: Looper.prepare(); ToastUtils.showToast(getApplicationContext(), "请求失败,返回的数据为:"+  result, 0); //对界面的更新 Looper.loop(); 但是这种方法并没有解决我的问题,后来的解决方法是:

Android中Toast如何在子线程中调用

当我们在应用的子线程中调用Toast的时候,我们会发现编译时并没有问题,但是当我们运行时就会出现如下错误 大专栏  Android中Toast如何在子线程中调用l/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="image"/> 通常我们都会认为此问题是因为在子线程中去更新UI导致的,其实不然,因为我们观察所抛出的log信息即可发现不是更新UI导致的,那么是什么原因导致的此问题呢 原文地址:https://www.cnblog

在子线程中直接使用 Toast 及其原理

一般我们都把Toast当做一个UI控件在主线程显示.但是有时候非想在子线程中显示Toast,就会使用Handler切换到主线程显示. 但是子线程中真的不能直接显示Toast吗? 答案是:当然可以. 那应该怎么操作呢?在当前线程中先初始化一个Looper即可! Looper.prepare(); Toast.makeText(getBaseContext(), "text", Toast.LENGTH_LONG).show(); Looper.loop(); 为什么在子线程中使用Toas

android 不能在子线程中更新ui的讨论和分析

问题描述 做过android开发基本都遇见过ViewRootImpl$CalledFromWrongThreadException,上网一查,得到结果基本都是只能在主线程中更改ui,子线程要修改ui只能post到主线程或者使用handler之类.但是仔细看看exception的描述并不是这样的,"Only the original thread that created a view hierarchy can touch its views",只有创建该 view 布局层次的原始线程

【iOS开发每日小笔记(九)】在子线程中使用runloop,正确操作NSTimer计时的注意点 三种可选方法

这篇文章是我的[iOS开发每日小笔记]系列中的一片,记录的是今天在开发工作中遇到的,可以用很短的文章或很小的demo演示解释出来的小心得小技巧.它们可能会给用户体验.代码效率得到一些提升,或是之前自己没有接触过的技术,很开心的学到了,放在这里得瑟一下.其实,90%的作用是帮助自己回顾.记忆.复习. 一直想写一篇关于runloop学习有所得的文章,总是没有很好的例子.正巧自己的上线App Store的小游戏<跑酷好基友>(https://itunes.apple.com/us/app/pao-k

android子线程中更新UI的方法

在Android项目中经常有碰到这样的问题,在子线程中完成耗时操作之后要更新UI,下面就自己经历的一些项目总结一下更新的方法: 参考:Android子线程 方法一:用Handler 1.主线程中定义Handler: Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what) { case 0: //

Android中Handler的使用方法——在子线程中更新界面

本文主要介绍Android的Handler的使用方法.Handler可以发送Messsage和Runnable对象到与其相关联的线程的消息队列.每个Handler对象与创建它的线程相关联,并且每个Handler对象只能与一个线程相关联. Handler一般有两种用途:1)执行计划任务,你可以再预定的实现执行某些任务,可以模拟定时器.2)线程间通信.在Android的应用启动时,会创建一个主线程,主线程会创建一个消息队列来处理各种消息.当你创建子线程时,你可以再你的子线程中拿到父线程中创建的Han

【第三篇】学习 android 事件总线androidEventbus之发布事件,子线程中接收

发送和接收消息的方式类似其他的发送和接收消息的事件总线一样,不同的点或者应该注意的地方: 1,比如在子线程构造方法里面进行实现总线的注册操作: 2,要想子线程中接收消息的功能执行,必须启动线程. 3,添加tag和不添加tag类似其他. 1 package com.example.mysimpleeventbus; 2 3 import java.util.ArrayList; 4 import java.util.List; 5 6 import org.simple.eventbus.Even