3

私の Android アプリでは、ディレクトリからイベントを検出したいと考えています。コードは次のとおりです。

String path = Environment.getExternalStorageDirectory()
            + File.separator + "test2";
    Log.d("test", "path is " + path);

    FileObserver fileObserver = new FileObserver(path, FileObserver.ALL_EVENTS) {
        @Override
        public void onEvent(int event, String path) {
            Log.d("test", "event dectect " + event + " " + path);
        }
    };

    fileObserver.startWatching();

新しいファイルをディレクトリにコピーします。しかし、私はイベントを取得しません。どこを間違えたのか教えてください。

4

4 に答える 4

16

ローカル変数を使用して FileObserver を格納することはできません。メソッドの実行後にガベージ コレクションで使用できるようになります。

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

解決策: フィールドに保存します。

于 2015-09-05T05:10:18.620 に答える