我們正在尋找有保存在設備中的一些事件引用一個字符串生成器,拿着一個靜態的StringBuilder
我們考慮寫入和讀取一個文件,但開放的成本和我們編寫的每個時間關閉文件似乎太高了。
的問題是,有時我們得到一個StackOverflow的例外,即使我們儘量保持StringBuilder的只是一個定義的大小
public class DiagnosticUtil {
private static final int DIAGNOSTIC_SIZE = 5000;
public static StringBuilder DIAGNOSTICS_HOLDER = new StringBuilder(DIAGNOSTIC_SIZE);
public static void addDiagnosticLine(String message){
try {
//Limits the size of the diagnostics recolection removing the first 2000 characters
if (DiagnosticUtil.DIAGNOSTICS_HOLDER.length() > DIAGNOSTIC_SIZE - 300) {
DiagnosticUtil.DIAGNOSTICS_HOLDER.delete(0, DiagnosticUtil.DIAGNOSTICS_HOLDER.length() - 2000);
}
DIAGNOSTICS_HOLDER.append(TimeUtils.getCurrentDate()).append(message).append("\n");
}catch (Exception e){
Timber.d("Error saving additional data");
}
}
}
的問題是,這是一個好辦法?還是應該將這些日誌保存到外部文件?
謝謝!
'StringBuilder'不持有引用到任何東西,更別說事件。你在尋找某種「藏品」嗎? – EJP