Вход в файл на Android: когда открывать, когда закрывать дескриптор файла?
Поскольку Jelly Been, я не могу сказать своим тестерам использовать alogcat
приложение для отправки мне логов, потому что Android теперь не позволяет приложениям читать логи.
Из-за этого мне нужно реализовать свой собственный журнал в файл, я думаю о чем-то вроде:
MyLog.d(TAG, "some log");
И поскольку я немного новичок в производительности ввода-вывода Java (особенно в перспективе Android), я не уверен в том, что является лучшим вариантом для реализации этой функции:
MyLog.d
открывает дескриптор файла, пишет в файл, закрывает дескрипторMyLog.d
при первом вызове открывает дескриптор статического файла и сохраняет его открытым в течение всего сеанса приложения, все записи отправляются в него по мере необходимости, после каждой записи происходит сброс. закрывает его где-нибудь при выходе из приложения / переход к bg
Из-за того, что в записи журнала вовлечено большое количество вызовов, я беспокоюсь о том, что первое может привести к тому, что многие обработчики откроются / закроются, и это может снизить производительность. В то время как второй может иметь некоторые другие недостатки (потери данных? Что-нибудь еще?)
Также, что является предпочтительным с точки зрения GC? Похоже, что первый тоже вызовет много мусора (новый OutputStream при каждом вызове журнала)
Таким образом, кажется, что первый вариант оказывается довольно дорогим, хотя я не уверен, что может быть у второго "скрытого плохого":)
Был бы признателен за совет от любого, кто имеет опыт в этой области.