修改线程内的父类变量

时间:2011-06-14 11:17:02

标签: java android multithreading

我正在尝试用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_itemsrtm_instance是写入线程的类的成员变量。似乎线程内的list_itemslist_items线程中父类中start()的快照。

虽然rtm_instance.update_notes_list按预期返回更新的备注列表,但对list_items所做的更改似乎并未修改父类中的相同变量。修改list_items只会修改线程中所述变量的副本

我希望修改也发生在父(UI)线程中,以便Android ListAdapter检测到这些并修改相应的ListView。如何从上面发布的子线程修改父线程变量list_items

谢谢!

1 个答案:

答案 0 :(得分:1)

您可能希望在UI线程上进行更新。您应该从UIThread向Runler发布一个runnable。或者,您可以调用runOnUiThread。要在父级上创建列表,您可以在父级上定义一个名为updateList(String val)的方法,并调用它而不是直接更改列表。