Вход в файл на Android: когда открывать, когда закрывать дескриптор файла?

Поскольку Jelly Been, я не могу сказать своим тестерам использовать alogcat приложение для отправки мне логов, потому что Android теперь не позволяет приложениям читать логи.

Из-за этого мне нужно реализовать свой собственный журнал в файл, я думаю о чем-то вроде:

MyLog.d(TAG, "some log");

И поскольку я немного новичок в производительности ввода-вывода Java (особенно в перспективе Android), я не уверен в том, что является лучшим вариантом для реализации этой функции:

  • MyLog.d открывает дескриптор файла, пишет в файл, закрывает дескриптор
  • MyLog.d при первом вызове открывает дескриптор статического файла и сохраняет его открытым в течение всего сеанса приложения, все записи отправляются в него по мере необходимости, после каждой записи происходит сброс. закрывает его где-нибудь при выходе из приложения / переход к bg

Из-за того, что в записи журнала вовлечено большое количество вызовов, я беспокоюсь о том, что первое может привести к тому, что многие обработчики откроются / закроются, и это может снизить производительность. В то время как второй может иметь некоторые другие недостатки (потери данных? Что-нибудь еще?)

Также, что является предпочтительным с точки зрения GC? Похоже, что первый тоже вызовет много мусора (новый OutputStream при каждом вызове журнала)

Таким образом, кажется, что первый вариант оказывается довольно дорогим, хотя я не уверен, что может быть у второго "скрытого плохого":)

Был бы признателен за совет от любого, кто имеет опыт в этой области.

0 ответов

Другие вопросы по тегам