2012-04-25 73 views
0

我已经能够在新线程中调用http post过程,但通过该帖子发送的变量根据运行此线程之前设置的另一个变量posttype的值而变化。Android SDK。在新的线程中访问旧变量

,决定在博文被设置为哪些值发送变量:新线程运行posttype被置位为“装载”或“卸载”之前public String posttype = "load";

。根据这些值,确定发送的数据。

我使用新的线程函数是从:http://android-developers.blogspot.com/2009/05/painless-threading.html

我使用从上述链接的可运行中所示的第二功能。

在第一个run()里面我通过http发送了变量。在第二个run()里面解析返回的变量。

问题是这样的:我无法访问posttype的值,因此if语句无法访问变量posttype,所以总是选择新线程函数中的else语句。

如何使变量posttype真正全球化或由新线程使用?

谢谢,

+1

不要尝试通过像这样的全局变量与线程进行通信。可能发生的最好的事情是,它显然每次都失败。最糟糕的是,似乎工作,你交付它。 – 2012-04-25 15:30:03

回答

1

如果我得到它的权利,你不能访问该变量,因为它不是最终的。如果是这样,你可以采用与posttype相同类型的最终变量,为其赋值并在第二次运行中使用它。 为了更清楚地检查我对这个问题的回答:final variable issue in an inner class

在这种情况下的侦听器运行在适用相同逻辑的情况下。

+0

难道它更简单!谢谢。对于其他人,我所做的唯一修改是在新线程的'run()'语句中添加'final String posttype2 = posttype;'INSIDE。新线程的'if'语句能够正确读取posttype2(间接posttype),因为posttype2在每次线程运行时都设置为posttype。 – 2012-04-25 15:49:43