关于创建Stamp批注的样例代码,为何会在多线程场景出现“随机”崩溃的情况?

关于SDK(全平台)创建代码(以annotation.java中的Stamp举例):

// Set icon provider for annotation to Foxit PDF SDK.
MyIconProvider iconProvider = new MyIconProvider(path);
Library.setAnnotIconProviderCallback(iconProvider);
Library.setActionCallback(null);

上述代码写在了具体方法中,path指向具体文件的路径,在多线程场景反复设定,可能存在线程A错误使用线程B的path的情况,如果线程B的path路径下不存在具体文件作对应,所以导致程序异常(文件不存在或找不到异常)。

所以,最佳实践方式:
1. 上述代码在全局范围内初始化,而不是在具体方法中初始化,保证程序的一个生命周期仅初始化一次(与SDK的license初始化概念一样);
2. path指定文件夹的具体路径,而不是文件的具体路径,开发人员在类MyIconProvider的hasIcon方法中指定具体文件路径即可。