在我的Android应用中,有一个名为userProfile(Promise promise)
的函数,其外观类似于以下内容:
@ReactMethod
public void userProfile(Promise promise) {
String name = getName();
String number = getNumber();
String userDynamicId = getHttpDynamicId(); // network request
...
promise.resolve(name + number + userDynamicId);
}
userProfile是ReactMethod
,将由UI线程处理,但是,getHttpDynamicId()
可能由于联网而花费很长时间。有时,UI线程被此功能阻止。
有没有简单的方法可以使用另一个线程来处理getHttpDynamicId()
来避免GUI冻结?还是任何其他多线程方法来解决问题?
答案 0 :(得分:1)
从Meow提供的链接中:https://developer.android.com/training/best-background。我设法提出了解决方案。
class MyCallable implements Callable<String> {
@Override
public String call() {
String userDynamicId = "";
try {
// XXXXX Code to get ID
} catch (Exception e) {
console.error(e);
}
return userDynamicId;
}
}
@ReactMethod
public void userProfile(Promise promise) {
String name = getName();
String number = getNumber();
// instantiate MyCallable
// Create executor and use Future to get the result from call()
promise.resolve(name + number + userDynamicId);
}