2012-06-30 3 views
1

У меня есть класс, который работает как рекурсивный файлообменный сервер. То, что он делает, делает наблюдателя файлов для всех каталогов в родительском каталоге, а затем начинает их наблюдать. Я знаю, что это работает, потому что в режиме отладки он регистрирует все изменения файла в logcat. Но когда я отсоединяюсь от отладчика и перезапускаю приложение, он запускает журналы «Начальный» и «Настройка», но не фиксирует никаких изменений файлов. Возможно ли, что сборщик мусора убирается, потому что отладчик не живет и не смотрит? Я не думаю, что это правда, потому что Intentservice, который его запускает, никогда не умирает.File Observer работает в режиме отладки, но события не будут запускаться без отладчика.

EDIT: Я сменил intenservice на nonstopintentservice, и то же самое все еще происходит. Таким образом, служба не разрушается.

Как вы думаете?

Благодаря

ответ

0

Оказывается, что даже если отладчик перечисляя пристальный услугу, как до сих пор жив, он на самом деле не было и наблюдатели файлов были завершены. Поэтому я написал поток, чтобы обмануть сборщик мусора, чтобы позволить объектам существовать.

0

Я пробовал с обслуживанием и в другой теме. Но никто не работал. Я думаю, что проблема в FileObserver - сбор мусора.

Предупреждение: Если FileObserver собрал мусор, он прекратит отправку событий. Чтобы вы продолжали получать события, вы должны хранить ссылку на экземпляр FileObserver из какого-либо другого объекта live

http://developer.android.com/reference/android/os/FileObserver.html