私は、フォルダ内の新しいファイルの作成を検出するためにFileObserveアプリケーションを実行しています。以下は、FileObserveを起動するために使用するサービスのonStartCommandのスニペットです。FileObserve Serviceスレッドはしばらくしてから実行されません。それを常に稼働させておく方法は?
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Thread Scan = new Thread() {
public void run() {
Log.i(TAG,"Started");
fileObserver = new FileObserve(Environment.getExternalStorageDirectory().getPath(),FileObserve.CREATE){
public void onEvent(int i, String s){
try {
//Modify files
} catch (Exception e) {
}
}
};
fileObserver.startWatching();
}
};
Scan.start();
return START_REDELIVER_INTENT;
}
アプリケーションを実行すると、しばらくの間、バックグラウンドで実行され、新しいファイルの作成が検出されます。これは、設定でサービスメニューを実行することによって、また新しいファイルが作成されるたびにアプリケーションによって行われるいくつかのファイル変更によっても検証されます。
しかし、しばらくすると、バックグラウンドで実行が停止します。現時点で作成された新しいファイルは変更されません。また、表示されている実行中のサービスメニューには表示されません。しかし時々それは再開していると言いますが、まったく始動しません。
いくつかのサービスフラグを使用してこれを解決することは可能ですか? 代替手段がない場合はどうすればよいですか? OnDestroy()でブロードキャストを送信することはできますか?
IntentServiceが異なる@rexあなたも、この使用 – rex
のためのサービスを必要としない、そこにあるファイルを修正しながら、例外のいくつかの種類もまた、これらのタスクのためのIntentServiceを使用してみたりすることもあり目的。とにかくhttps://stackoverflow.com/questions/7265906/how-do-you-implement-a-fileobserver-from-an-android-serviceを使って解決しました – abhinandanbr