Java 从线程访问主活动中的变量
我有以下代码:Java 从线程访问主活动中的变量,java,android,multithreading,Java,Android,Multithreading,我有以下代码: public class MainActivity extends Activity { public String myString; ... public void updateString() { new Thread() { @Override public void run() { this.myString = "TEST"
public class MainActivity extends Activity {
public String myString;
...
public void updateString()
{
new Thread() {
@Override
public void run() {
this.myString = "TEST";
}
}
}
}
问题是我需要从线程更新myString,但我无法访问它。有什么建议吗?谢谢大家! 在这种情况下,创建一个自定义类,该类将实现Runnable并将myString作为参数传递给该类的构造函数,因此在创建Runnable对象时,它将存储在本地,需要时可以从run方法访问该对象。您可以使用getter和setter,例如: 公共类MainActivity扩展了活动{ 公共字符串myString
...
public void updateString()
{
new Thread() {
@Override
public void run() {
setMyString("TEST");
}
}
}
public void setMyString(String myString){
this.myString = myString;
}
}您可以通过这种方式使字符串全局化并更新它
public class MainActivity extends Activity {
public String myString;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
updateString();
}
public void updateString()
{
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
for(int i=0; i<10;i++){
myString=String.valueOf(i);
//log
Log.d("myString:",myString);
}
}
}).start();
}
公共类MainActivity扩展活动{
公共字符串myString;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
updateString();
}
公共void updateString()
{
新线程(newrunnable()){
@凌驾
公开募捐{
//TODO自动生成的方法存根
对于(int i=0;我看一看,使用一个布尔值,如果为true,则更改变量,例如,它不应该是volatile
?