0

私はサービスを持っています:

public class FileObserverService extends Service {

private FileObserverForNewFirFiles fObs;

@Override
public void onCreate() {
    Log.i("FILE_OBSERVER_SERVICE: ", "INSIDE ONCREATE()"); 
    File f = new File("/mnt/sdcard/Bluetooth"); 
    createFileObserver(f);

}


public void createFileObserver(File f) {

    if(!f.isDirectory()) {
        Log.i("FILEOBSERVER: ", "FILE NOT A DIRECTORY!"); 
    }
    else {
        fObs = new FileObserverForNewFirFiles(f.getAbsolutePath()); 
    }
}

@Override
public void onStart(Intent i, int startid) {
    fObs.startWatching();
    Toast.makeText(this.getApplicationContext(), "start monitoring file modification", Toast.LENGTH_SHORT).show();
}


@Override 
public void onDestroy() {
    fObs.stopWatching();
    Toast.makeText(this.getApplicationContext(), "stop monitoring file modification", Toast.LENGTH_SHORT).show();
}


@Override
public IBinder onBind(Intent arg0) {
    return null;
}
}

メイン アクティビティから、このクラスを次のように呼び出します。

startService(new Intent(ThisClass.this, FileObserverService.class));

このメソッドの最初の行を参照して、このメソッドは にonCreate何かを出力すると思いました。LogCatしかし、それはしないようです。何かヒット?

4

1 に答える 1

0

あなたが本当に欲しいのは IntentService だと思います

http://developer.android.com/reference/android/app/IntentService.html

onCreate のメソッド署名を置き換えるだけです

onStartCommand で

基本的に、通常の古いサービスを実行するために必要な作業をすべて行ったわけではありません。IntentService は、それ以上の労力を必要とせずにすべての作業を行います。

于 2012-08-06T07:31:17.213 に答える