有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    不能保证runnable中的代码会在Toast块执行之前执行完毕。这只意味着线程在Toast块之前“启动”。如果你真的需要这个线程(我假设这是你试图用多个线程完成的任务的代理代码),在线程上使用join方法。想不出使用单一线程的理由

    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().join();