handler接受消息之后不在主线程中运行 ,而是在发消息的那个线程运行,这叫老夫情何以堪啊!!有知道咋回事的没 内牛满面呐 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 hander创建时有个looper参数的你要在哪个线程处理,就把那个线程的looper传进去就可以了 我记得是有个默认运行的事的啊 只要我是在主线程中创建的 那他就会在主线程中运行的啊 还有那个looper从来没用过 能给个类似的例子吗 问题时新建的线程是没自己的消息列队的lass LooperThread extends Thread { public Handler mHandler; public void run() { Looper.prepare(); mHandler = new Handler() { public void handleMessage(Message msg) { // process incoming messages here System.out.println("Current Task1 Thread Id:"+ Thread.currentThread().getId()); } }; Looper.loop(); } }这样线程有自己的looper时默认是在该线程处理的,没Looper.prepare()则是在主线程处理的。 Looper.loop()时是阻塞来监听消息的 你理解错我的意思了 我就是要handler在主线程中运行 不让他在新线程中运行,我要修改UI界面,在新线程是改不了的 。我新的线程里什么都没写 就一个发送消息,可是handler还是不在主线程运行 那创建handler是指定主线程的looper就在主线程处理的 mHandler = new Handler(Looper.getMainLooper()) { public void handleMessage(Message msg) { // process incoming messages here System.out.println("Current Task1 Thread Id:"+ Thread.currentThread().getId()); } }; 内牛满面呐。不好使 真特么邪门 我建了个最简单的程序依然杯具 代码附上 哥们帮看下吧。。挠墙去了package yjc.text;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.os.Looper;import android.os.Message;import android.widget.ImageView;public class Text extends Activity { private ImageView image; private Handler handler; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); new Threadss().start(); handler=new Handler(Looper.getMainLooper()){ @Override public void handleMessage(Message msg) { // TODO Auto-generated method stub super.handleMessage(msg); System.out.println(Thread.currentThread().getName()); } }; } class Threadss extends Thread{ @Override public void run() { // TODO Auto-generated method stub super.run(); System.out.println(Thread.currentThread().getName()); Message msg=new Message(); handler.handleMessage(msg); } } } 内牛满面handler不是这样用的啊润class Threadss extends Thread{ @Override public void run() { // TODO Auto-generated method stub super.run(); System.out.println(Thread.currentThread().getName()); Message msg=new Message(); msg.what=1; handler.sendMessage(msg); } } 经典代码合集+ANGLE游戏引擎源码和例子(需要学习的留邮箱) 如何在AppWidget上实现ToggleButton 《急》Android frameanimation 切换动画资源文件后不再播放 ListView使用中的一点问题 实现自定义button,自定义view的问题。。。。有图。。。 名称确认---"adb 工具包" 后台Service服务的结构问题 求救android,新手! 请教各位如何读取/dev下面的设备文件 android不改变源码情况下,增加按键 如何响应按键来关闭WindowManger生成的FloatView android calendar bug?
lass LooperThread extends Thread {
public Handler mHandler;
public void run() {
Looper.prepare();
mHandler = new Handler() {
public void handleMessage(Message msg) {
// process incoming messages here
System.out.println("Current Task1 Thread Id:"+ Thread.currentThread().getId());
}
};
Looper.loop();
}
}这样线程有自己的looper时默认是在该线程处理的,没Looper.prepare()则是在主线程处理的。 Looper.loop()时是阻塞来监听消息的
public void handleMessage(Message msg) {
// process incoming messages here
System.out.println("Current Task1 Thread Id:"+ Thread.currentThread().getId());
}
};
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.widget.ImageView;public class Text extends Activity { private ImageView image;
private Handler handler; /** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
new Threadss().start();
handler=new Handler(Looper.getMainLooper()){ @Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
System.out.println(Thread.currentThread().getName());
}
};
}
class Threadss extends Thread{ @Override
public void run() {
// TODO Auto-generated method stub
super.run();
System.out.println(Thread.currentThread().getName());
Message msg=new Message();
handler.handleMessage(msg);
}
}
}
润
class Threadss extends Thread{ @Override
public void run() {
// TODO Auto-generated method stub
super.run();
System.out.println(Thread.currentThread().getName());
Message msg=new Message();
msg.what=1;
handler.sendMessage(msg);
}
}