gpt4 book ai didi

java - 在函数中间调用Thread

转载 作者:行者123 更新时间:2023-12-01 09:54:55 25 4
gpt4 key购买 nike

我正在调用一个线程,该线程将 GCM ID 返回到名为 gcmRegID 的公共(public)变量中

问题是线程只有在函数结束后才会被调用

我想知道是否有办法可以获取函数中间的 gcmRegID 的值

我将通过代码解释更多

我想获取CheckGCMID中gcmRegID的值,但我得到的是“”

String gcmRegID = "";
public void onClick(View view) {
String CheckGCMID;
GetGCM();
CheckGCMID = gcmRegID; // <-- This is always return empty string
}

private void GetGCM() {
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
try {
GCMHelper gcmRegistrationHelper = new GCMHelper(
getApplicationContext());
gcmRegID = gcmRegistrationHelper.GCMRegister("123456");
// gcmRegID value is "KHDKJDIUHDHDKDK"
} catch (Exception bug) {
bug.printStackTrace();
}
}
});

thread.start();
}

最佳答案

您应该使用回调来异步获取您的值。

尝试这样的事情:

public void onClick(View view) {

String CheckGCMID;
GetGCM(new MyCallback(){
@Override
public void receivedString(String myString) {
//use your id here
System.out.println(myString);
}
});

}


private interface MyCallback{
public void receivedString(String myString);
}

private void GetGCM(MyCallback callback) {
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
try {
GCMHelper gcmRegistrationHelper = new GCMHelper (getApplicationContext());
String gcmRegID = gcmRegistrationHelper.GCMRegister("123456");
callback.receivedString(gcmRegID);
} catch (Exception bug) {
bug.printStackTrace();
}

}
});
thread.start();
}

关于java - 在函数中间调用Thread,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37322520/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com