1

再帰的なファイルオブザーバーとして機能するクラスがあります。親ディレクトリ内のすべてのディレクトリのファイル オブザーバーを作成し、それらの監視を開始します。デバッグモードでは、すべてのファイルの変更がlogcatに記録されるため、機能することはわかっています。しかし、デバッガーから切断してアプリを再起動すると、開始ログとセットアップ ログが作成されますが、ファイルの変更はキャッチされません。デバッガーがライブで監視されていないため、ガベージコレクターがクリーンアップしている可能性はありますか? それを実行する Intentservice は決して死ぬことはないので、それは真実ではないと思います。

編集:インテントサービスをノンストップインテントサービスに変更しましたが、同じことがまだ起こっています。したがって、サービスは破壊されません。

どう思いますか?

ありがとう

4

2 に答える 2

0

サービスと別のスレッドで試しました。しかし、どれも機能しませんでした。問題は、FileObserver がガベージ コレクションであることだと思います。

警告: FileObserver がガベージ コレクションされると、イベントの送信が停止します。イベントを確実に受信し続けるには、他のライブ オブジェクトから FileObserver インスタンスへの参照を保持する必要があります。

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

于 2014-05-21T14:05:54.077 に答える
0

デバッガーはインテント サービスがまだ有効であると表示していましたが、実際にはそうではなく、ファイル オブザーバーがファイナライズされていたことが判明しました。そこで、ガベージ コレクターをだましてオブジェクトを存在させるスレッドを作成しました。

于 2012-07-06T22:42:20.583 に答える