从Android中的SDK向用户返回回调

从Android中的SDK向用户返回回调,android,callback,java-native-interface,Android,Callback,Java Native Interface,我有以下用例: 我有一个用户调用的初始化方法。它附带了一个回调监听器,该监听器应该在方法完成时从SDK调用。但是,由于函数中的大部分代码是在不同的线程上执行的,并且有从函数中调用的C/C++方法,因此初始化函数中的最后一个print语句是在函数实际完成之前执行的,我从调用的C/C++函数中获取值。 现在,我能够将回调从C/C++代码返回到java层,表示初始化结束。但是,在java中完成初始化函数(用户调用)后,如何进一步将其作为回调传递给用户呢 这是我的密码: 调用初始化方法的用户代码: in

我有以下用例:

我有一个用户调用的初始化方法。它附带了一个回调监听器,该监听器应该在方法完成时从SDK调用。但是,由于函数中的大部分代码是在不同的线程上执行的,并且有从函数中调用的C/C++方法,因此初始化函数中的最后一个print语句是在函数实际完成之前执行的,我从调用的C/C++函数中获取值。 现在,我能够将回调从C/C++代码返回到java层,表示初始化结束。但是,在java中完成初始化函数(用户调用)后,如何进一步将其作为回调传递给用户呢

这是我的密码:

调用初始化方法的用户代码:

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;
}