0

受話器の起動直後から電源が切れるまで、ファイルシステム全体から削除された画像とビデオを常に追跡する必要があります(UIアプリが実行されていない場合でも)。この目的のために、私はサービスとFileObserverを使用しています。残念ながら、以下に添付されているコードは機能しません(私はデバッガーでメソッドを取得できません

public void onEvent(int event、String file)

FSにいくつかの変更を加えましたが...サービスが開始され、明らかにonStarted()メソッドが実行されます...

助けてください

public class DataChangeListener extends Service {

    private static Context context;

    @Override
    public IBinder onBind(Intent intent) {
        context = this;
        return null;
    }

    @Override
    public void onStart(Intent intent, int startId) {
        super.onStart(intent, startId);
        context = this;

        FileObserver observer = new FileObserver("/") {

            @Override
            public void onEvent(int event, String file) {
                System.out.println();
            }
        };
        observer.startWatching();
    }

    @Override
    public boolean onUnbind(Intent intent) {
        return super.onUnbind(intent);
    }
}
4

1 に答える 1

2

ファイル システム全体から削除された画像や動画を常に追跡する必要がある

サービスを常に実行し続けることはできないため、変更されたバージョンの OS を作成しない限り、これは不可能です。たとえば、ユーザーはいつでもあなたのサービスを取り除くことができます。

残念ながら、以下に添付されたコードは機能しません

まず、 への読み取りアクセス権がないため/、操作に干渉する可能性がありFileObserverます。

第二に、FileObserverドキュメントで強調表示された段落を見逃しました:

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

FileObserverガベージコレクションを許可しています。

于 2012-11-22T23:57:18.177 に答える