Android 在工作线程(非主线程)更改UI组件

Looper.prepare();
          Toast.makeText(LoginActivity.this,filedId, Toast.LENGTH_LONG).show();
        Looper.loop();

这样为什么可以?然后就是loop 是个死循环,这样子真的好吗?

时间: 2024-08-24 17:21:35

Android 在工作线程(非主线程)更改UI组件的相关文章

Android中,子线程使用主线程中的组件出现问题的解决方法

Android中,主线程中的组件,不能被子线程调用,否则就会出现异常. 这里所使用的方法就是利用Handler类中的Callback(),接受线程中的Message类发来的消息,然后把所要在线程中执行的功能交由Handler类来处理.这样就解决了线程出现的问题. 下面测试实例功能为单击图片,图片透明度改变为50,300毫秒后恢复不透明,代码如下: public class Demo extends Activity{ private ImageView changeImg = null;//Im

Android AsyncTask使用心得及错误处理-只能在主线程改变UI组件

大家肯定都会经常使用AsyncTask这个类,特别是在网络处理中,先看改正后的代码:这是正常的代码: class sendKeyTask extends AsyncTask<String, Void, Integer> { @Override protected void onPostExecute(Integer resultCode) { // TODO Auto-generated method stub super.onPostExecute(resultCode); switch (

Android 在非主线程无法操作UI意识

Android在应用显示Dialog是一个非常easy事儿,但我从来没有尝试过Service里面展示Dialog. 经验UI操作要在主线程,本地的服务Service是主线程里没错,可是远程service里面显示Dialog,听起来是不是就应该没有在主线程里面了呢? 尝试一下就知道了,写了个AIDL的调用,client端去调用AIDL.在Service这边就是去显示一个Dialog. AIDL的部分就忽略了.Service这边的代码就和Activity上显示dialog一样. AlertDialo

Android 关于非主线程不能操作UI的认识

Android在应用里显示Dialog是个很简单的事情,但是一直没试过在Service里面显示Dialog.根据之前的经验UI操作要在主线程,本地的服务Service是主线程里没错,但是远程service里面显示Dialog,听起来是不是就应该没有在主线程里面了呢? 尝试一下就知道了,写了个AIDL的调用,client端去调用AIDL,在Service这边就是去显示一个Dialog.AIDL的部分就忽略了.Service这边的代码就和Activity上显示dialog一样. AlertDialo

在非主线程里面使用NSTimer创建和取消定时任务

为什么要在非主线程创建NSTimer 将 timer 添加到主线程的Runloop里面本身会增加线程负荷 如果主线程因为某些原因阻塞卡顿了,timer 定时任务触发的时间精度肯定也会受到影响 有些定时任务不是UI相关的,本来就没必要在主线程执行,给主线程增加不必要的负担.当然也可以在定时任务执行时,手动将任务指派到非主线程上,但这也是有额外开销的. NSTimer的重要特性 NSTimer上的定时任务是在创建NSTimer的线程上执行的.NSTimer的销毁和创建必须在同一个线程上操作 NSTi

多线程的非主线程的销毁机制

假设有如下代码所示的多线程: 1 private void btnNewThread_Click(object sender, EventArgs e) 2 { 3 Thread t = new Thread(new ThreadStart(Test)); 4 t.Start(); 5 this.btnNewThread.Enabled = false; 6 } 7 private void Test() 8 { 9 //-- 10 } 这个新建的线程t在执行完Test()方法后会自动销毁吗?还

【Android笔记】不能在主线程中进行网络操作

在网上看到,自己以前也曾经遇到: 1 04-26 14:36:14.663: E/AndroidRuntime(10368): android.os.NetworkOnMainThreadException 2 04-26 14:36:14.663: E/AndroidRuntime(10368): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1117) 3 但是我在manifest里配置了

QT子线程与主线程的信号槽通信

最近用QT做一个服务器,众所周知,QT的主线程必须保持畅通,才能刷新UI.所以,网络通信端采用新开线程的方式.在涉及到使用子线程更新Ui上的控件时遇到了点儿麻烦.网上提供了很多同一线程不同类间采用信号槽通信的方式,但是并不完全适合线程间的信号槽通信,这主要体现在自定义消息的传递上. 首先我们看看一般的方式: testthread.h 文件 #ifndef TESTTHREAD_H #define TESTTHREAD_H #include <QThread> #include "ms

Qt自己定义事件实现及子线程向主线程传送事件消息

近期在又一次学习Qt的时候,由于要涉及到子线程与主线程传递消息,所以便琢磨了一下.顺便把有用的记录下来,方便自己以后查询及各位同仁的參考! 特此声明,本篇博文主要讲述有用的,也就是直接说明怎么实现,就不打算陈述一大堆理论啦,只是,还是建议大家去查查对应的理论比較好.这样能对Qt的消息传送机制的理解更加深入. 依据网上大多数人的资料,要实现自己定义消息,须要从QEvent 派生一个自己定义的事件:事实上也能够不须要,仅仅要使用QEvent::Type自己定义一个事件即可了. 在这里,本人把两种实现

C# 线程调用主线程中的控件

由于项目的需要,最近几天一直在做串口和数据库.由于C#使用的时间不长,所以在编写代码和调试的过程中总是遇到意想不到的问题,比如在使用串口接收数据的时候,在接收数据事件中想把接收的数据放入一个textbox作显示,但是明明非常简单的代码,在编译的时候总是提示有错误.后来查看网上资料,才知道C#还有委托,匿名等等之类的新东西.下面我就把我这几天的经验和大家分享一下.这次就主要说说委托和匿名方法,以后在说说串口使用方面的经验. 先说一下委托的基本概念,委托是一种引用型的数据类型,其实它的概念和C语言的