从Android中的SDK向用户返回回调
我有以下用例: 我有一个用户调用的初始化方法。它附带了一个回调监听器,该监听器应该在方法完成时从SDK调用。但是,由于函数中的大部分代码是在不同的线程上执行的,并且有从函数中调用的C/C++方法,因此初始化函数中的最后一个print语句是在函数实际完成之前执行的,我从调用的C/C++函数中获取值。 现在,我能够将回调从C/C++代码返回到java层,表示初始化结束。但是,在java中完成初始化函数(用户调用)后,如何进一步将其作为回调传递给用户呢 这是我的密码: 调用初始化方法的用户代码:从Android中的SDK向用户返回回调,android,callback,java-native-interface,Android,Callback,Java Native Interface,我有以下用例: 我有一个用户调用的初始化方法。它附带了一个回调监听器,该监听器应该在方法完成时从SDK调用。但是,由于函数中的大部分代码是在不同的线程上执行的,并且有从函数中调用的C/C++方法,因此初始化函数中的最后一个print语句是在函数实际完成之前执行的,我从调用的C/C++函数中获取值。 现在,我能够将回调从C/C++代码返回到java层,表示初始化结束。但是,在java中完成初始化函数(用户调用)后,如何进一步将其作为回调传递给用户呢 这是我的密码: 调用初始化方法的用户代码: in
initialize(FiosTVApplication.getAppContext(), "CIAAACAKigE", new PostInitialization() {
@Override
public void complete() {
MsvLog.d("&&&&", "At the end of onComplete Callback");
}
});
回调接口:
public interface PostInitialization {
void complete();
}
SDK代码:
在java中初始化方法:
public static void initialize(Context ctx, final String snippetId, PostInitialization listener)
//c++ method calls and network calls
listener.complete();
log.d("SDK initialization complete"); // this is wrong as the c/c++ code execution and network calls is still not finished
}
初始化结束方法,该方法从c/c++调用,以让java代码知道初始化已完成。因此,我想调用listener.complete()
那么,我如何根据调用setEndOfInitialization方法的时间将initialize方法(用户将调用该方法)的回调传递给用户,就像从c/c++调用该方法时,初始化真正完成一样。
initialize和setEndOfInitialization方法都位于同一个名为Session.java的java文件中
public static int setEndOfInitialization(final boolean isEnd) {
_mHandler = new Handler(Looper.getMainLooper());
_mHandler.post(new Runnable() {
@Override
public void run() {
listener.complete(); //this is not correct, for illustration only
Logger.d("&&&&", " At the end of setEndOfInitialization" + isEnd);
}
});
return 1;
}