прослушивание файловых изменений в файловой системе Android без наблюдателя файла - PullRequest
1 голос
/ 02 апреля 2012

Я все еще новичок в программировании для Android, (написал одно небольшое приложение) и я также новичок в переполнении стека.Я ищу написать что-то, что будет перечислено для изменений в файле, точно так же, как работает обозреватель файла.но проблема в том, что файл, на который я смотрю, получает изменения от ядра, и я понял, что наблюдатель файла, похоже, обнаруживает изменения, если это не сделано пользователем.Благодарю.

Ответы [ 3 ]

2 голосов
/ 10 октября 2013

Я знаю, что это старый, но я думаю, я должен опубликовать ответ, который я нашел.

Решение - UEventObserver

Документ: (http://www.androidjavadoc.com/1.1_r1_src/android/os/UEventObserver.html)

Я нашел свой ответ в области "frameworks / base / services / java / com / android / server /" исходного кода Android, где они прослушивают изменения, сообщенные ядром.

моя реализация решения здесь: https://github.com/gh123man/ICS_tablet_HW_rotationlock/blob/master/frameworks/base/services/java/com/android/server/RotationSwitchObserver.java

0 голосов
/ 07 августа 2012

Я считаю, что нет хорошего решения.FileObserver будет сообщать только о событиях, которые происходят в пользовательском пространстве - события, происходящие из ядра (то есть в файл procfs), не сообщаются.Кроме того, операции с файлами также не будут работать, поэтому вы не можете проверить хэш, длину, дату изменения и т. Д. Этих файлов.

Мои наблюдения основаны на 2.3.6.

0 голосов
/ 05 мая 2012

"файл, на который я смотрю, получает изменения от ядра"

Если вы обращаетесь к файлу из procfs или к другому виртуальному файлу, боюсь, inotify не будеточень вам помочь ...

поиск "Q: Есть ли какие-либо ограничения для использования inotify?"

Q: Есть ликакие-либо ограничения для использования inotify?
Да.Некоторые файловые системы (например, procfs или некоторые сетевые файловые системы) в некоторых случаях не генерируют события.

...