修改线程内部的父类变量

问题描述

| 我正在尝试用Java创建一个Android应用程序(使用具有最新Eclipse,ADT和最新Android SDK的Ubuntu 11.10)。 我在其父类函数中具有以下线程:
new Thread(new Runnable(){
            public void run(){
                    try{
                        list_items = rtm_instance.update_notes_list(list_items);
                        list_items.add(\"test\");

                    } catch (Exception e) {
                        e.printstacktrace();
                    }
        }
}).start();
list_items
rtm_instance
是在其中写入线程的类的成员变量。似乎线程内的“ 1”是父类中“ 5”对线程的“ 1”的快照。 尽管
rtm_instance.update_notes_list
会按预期返回更新的注释列表,但对
list_items
所做的更改似乎并未修改父类中的相同变量。修改“ 1”无非是修改线程内所述变量的副本。 我也希望在父(UI)线程中进行修改,以便Android
listadapter
可以检测到这些并修改相应的
ListView
。如何修改上面发布的子线程的父线程变量
list_items
? 谢谢!     

解决方法

        您可能希望更新发生在UI线程上。您应该从UIThread将可运行对象发布到Handler。或者,您可以调用runOnUiThread。要在父级上具有列表,可以在父级上定义一个名为updateList(String val)的方法,然后调用此方法,而不是直接更改列表。