java/安卓代码中变量的范围。
我的安卓代码如下所示:
boolean b;
Context context;
//inside onCreate method:
b =false;
context= getApplicationContext();
//outside onCreate method
public void c(){
new Thread(new Runnable(){
boolean d = false;
public void run(){
//inside a try/catch block:
try{
d = true;
b =d; // b was defined inside onCreate
}catch{
}
}
}).start();
if(b)Toast.makeText(context,"hello whale",Toast.LENGTH_LONG).show();
else Toast.makeText(context,"hello Lion",Toast.LENGTH_LONG).show();
} //end of method c
打印的祝酒词是“你好,狮子”。我不知道为什么,因为在try/catch块中b被设置为true。我不知道会错过什么
我知道这很简单,但我不知道它是什么。我需要在手机屏幕上打印“hello whale”
我知道try/catch块的try部分正在执行,因为我有一个outputstream正在写入本地主机数据库。所有需要写入的字段都已被outputstream写入
谢谢你的建议
# 1 楼答案
不能保证runnable中的代码会在Toast块执行之前执行完毕。这只意味着线程在Toast块之前“启动”。如果你真的需要这个线程(我假设这是你试图用多个线程完成的任务的代理代码),在线程上使用join方法。想不出使用单一线程的理由