0

我似乎无法找到我遇到的这个问题的答案:

是来自 ACRA 库的方法吗...

ACRA.getErrorReporter().putCustomData(Name, Content);

...线程安全?

我想从两个不同的线程中调用它,但我不确定我是否应该这样做。

我已经搜索了文档,但不幸的是我找不到与此相关的任何内容,或者我只是一个糟糕的 Googleler :)

4

2 回答 2

1

如果不确定,请购买一些保险:

ErrorReporter er = ACRA.getErrorReporter();
synchronized( er ) {
    er.putCustomData( ..., .... );
}
于 2013-03-07T16:34:59.670 回答
1

所以我想我已经弄清楚了。

查看代码,我注意到该putCustomData方法实际上是对方法的调用HashMap's,更准确地说put

经过进一步搜索,我发现该方法put不同步。

所以答案是否定的,putCustomData从两个不同的线程调用会给你带来问题。

有关问题的解决方案:请参阅下面的323go的想法。在我的例子中,我已经有一个我使用的单例类,所以我只是在我调用该方法的那个类中放置了一个同步putCustomData方法。

注意:如果我错了,请有人告诉我,但这是我能够找到的。

于 2013-03-07T16:59:26.470 回答