技术开发 频道

OPhone联网应用开发中的线程管理与界面更新

  使用Handler更新界面

  其实,connect()方法中抛出的异常是由于界面更新引起的。Connect()方法直接在新启动的线程中调用message.setText()方法是不正确的。OPhone平台只允许在主线程中调用相关View的方法来更新界面。如果返回结果在新线程中获得,那么必须借助Handler来更新界面。为此,在NetworkActivity中创建一个Handler对象,并在handleMessage()中更新UI。

//Task在另外的线程执行,不能直接在Task中更新UI,因此创建了Handler
    
private Handler handler = new Handler() {
        @Override
        
public void handleMessage(Message msg) {
            
String m = (String) msg.obj;
            message.setText(m);
        }
    };

   当从connect()方法中获得网页内容后,使用如下方法更新界面。

s = new String(baos.toByteArray());
    Message mg
= Message.obtain();
    mg.obj
= s;
    handler.sendMessage(mg);

   重新运行NetworkActivity,点击“连接”按钮,结果如图2示,正确读取了网页的内容。

 

0
相关文章