作者erspicu (.)
看板AndroidDev
标题[问题] handler没有回应
时间Tue Feb 14 21:45:51 2012
大概就是我在另开的thread改主线程的UI
GOOGLE找到解法 用handler去解
虽然存取UI thread是ok了
不过 因为会快速重覆执行handler
容易导致写入的资料错乱掉
public screenHandler screen_handler = new screenHandler();
public void print_screen(String tmp){
screen_txt = tmp;
Message m = new Message();
m.what = UPDATE_SETTING_SUCCESS;
screen_handler.sendMessage(m);
synchronized ( ???? ) {
try {
????.wait();
} catch (InterruptedException e) {
}
}
//msleep(30); 原本用sleep稍微delay的方式去解资料写入错乱问题 是ok
//但是觉得很笨
}
底下为handler
class screenHandler extends Handler {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case UPDATE_SETTING_SUCCESS:
TextView debug_screen = (TextView)findViewById( R.id.debug_screen );
debug_screen.setText( get_screen_txt ( screen_txt ) );
synchronized( ???? ) {
????.notify();
}
break;
}
super.handleMessage(msg);
}
}
有试在????的地方用this或是screen_handler去发送和接收来解锁
但是都等不到notify的传送 一值卡在wait()那边
不知道正确的解法是怎样?
很奇怪这解法我用在相机callback等待的情况下就ok....
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 219.69.90.23
1F:推 sweet00914:这是个有趣的问题,因为-"背景无法控制前景"这规则。0. 02/14 23:08
2F:→ sweet00914:前景(View),背景(Thread)。明天再来研究看看0.0 02/14 23:09
3F:→ sweet00914:感谢原PO大大的分享0.0 02/14 23:09
4F:→ k70430:试着改用AsyncTask看看,有几个void能让你改前景的 02/15 00:01