Android 从LAN线程中收集的数据更新UI?

Android 从LAN线程中收集的数据更新UI?,android,multithreading,listview,user-interface,Android,Multithreading,Listview,User Interface,我有一个线程可以查看LAN并收集用于更新ListView的数据。 问题是我不能从UI以外的线程更新ListView。 用户按下一个键,向LAN上的服务器发出查询,然后期望ListView显示数据。 进行LAN监控的最佳方法是什么?如果我正确理解了您的问题,您可能会想要以下内容: final Handler mHandler = new Handler(); final Runnable mUpdateResults = new Runnable() { public void run()

我有一个线程可以查看LAN并收集用于更新ListView的数据。 问题是我不能从UI以外的线程更新ListView。 用户按下一个键,向LAN上的服务器发出查询,然后期望ListView显示数据。
进行LAN监控的最佳方法是什么?

如果我正确理解了您的问题,您可能会想要以下内容:

final Handler mHandler = new Handler();
final Runnable mUpdateResults = new Runnable() {
    public void run() {
        updateUI();
    }
};

private void getLAN() {
    Thread t = new Thread() {
        public void run() {
            //do LAN stuff
            mHandler.post(mUpdateResults);
        }
    };
    t.start();
}

private void updateUI() {
    //update UI
}

两个问题:mHandler.post(mHandler.post(mUpdateResults);这可以从一个永久循环中执行吗?我是否必须转换mUpdateResults?我基本上是从我自己的代码中提取出来的,所以不需要转换。至于循环,我自己没有尝试过,但我不明白为什么不可以,至少值得一试!谢谢-我现在有了这个想法