我似乎无法找到我遇到的这个问题的答案:
是来自 ACRA 库的方法吗...
ACRA.getErrorReporter().putCustomData(Name, Content);
...线程安全?
我想从两个不同的线程中调用它,但我不确定我是否应该这样做。
我已经搜索了文档,但不幸的是我找不到与此相关的任何内容,或者我只是一个糟糕的 Googleler :)
如果不确定,请购买一些保险:
ErrorReporter er = ACRA.getErrorReporter();
synchronized( er ) {
er.putCustomData( ..., .... );
}
所以我想我已经弄清楚了。
查看代码,我注意到该putCustomData
方法实际上是对方法的调用HashMap's
,更准确地说put
。
经过进一步搜索,我发现该方法put
不同步。
所以答案是否定的,putCustomData
从两个不同的线程调用会给你带来问题。
有关问题的解决方案:请参阅下面的323go的想法。在我的例子中,我已经有一个我使用的单例类,所以我只是在我调用该方法的那个类中放置了一个同步putCustomData
方法。
注意:如果我错了,请有人告诉我,但这是我能够找到的。