我在一个Android应用程序中有一个Singleton(工作正常),其中一个函数需要在另一个线程的类变量中设置数据,但是只有在我两次运行该函数时,数据才会设置。

onCreate:

Thread thread;
Runnable runnables;
String recvData;

@Override
public void onCreate() {
    super.onCreate();
    singleInstance = this;
    recvData = "one";
    Log.v("oncreate", "singleton");
}


threaded_data_set:

public String threaded_set_data() {
    runnables = new Runnable(){
        @Override
        public void run() {
            recvData = "two";
            return;
        }
    };
    thread = new Thread(runnables);
    thread.start()
    Log.v("Data", recvData);
    return recvData;
}


在第一次运行时,它将记录("Data", "one"),仅在第二次运行时,它将更改为("Data", "two")

我在这里做错了什么?

最佳答案

recvData的默认值为:

recvData = "one";


这里没有什么错,

Log.v("Data", recvData);


只是在您的线程打印出第二条日志消息之前将其打印出来。

10-08 14:54