15分ごとにサービスを開始したい。ほとんどの場合、約 30 秒で終了しますが、サービスが 15 分以上続く場合もあります。以前のサービス コールがまだ実行されている場合、alarmmanager がサービスを開始するのは良くないと思います。サービスが実行されている場合、何もせずに単に返すように onStartCommand にフラグを設定することを検討していました。しかし、onStartCommand が int を返し、システムがこの値に何を必要としているかがわからないため、これがそれを処理する最善の方法であるかどうかはわかりません。これを行う最善の方法はありますか?
1 に答える
しかし、CommonsWare から次のように聞いています。
ええ、あの CommonsWare の人、彼は確かにたくさん書いています... :-)
以前のサービス コールがまだ実行されている場合、alarmmanager がサービスを開始するのは良くないと思います。
を使用している場合IntentService
、これは問題になりません。2 番目のアラームからのコマンドがキューonHandleIntent()
に入れられ、最初のアラームが終了するのを待ちます。
を使用していない場合は、自分のスレッドがまだ処理中であることを確認するIntentService
ために smarts を使用する必要があるため、コマンドをスキップする必要があります。onStartCommand()
しかし、onStartCommand が int を返し、システムがこの値に何を必要とするかがわからないため、これがそれを処理するための最良の方法であるかどうかはわかりません。
それはあなたの問題とは何の関係もありません。return 、または現在のメソッドが返すものはsuper.onStartCommand()
何でも。onStartCommand()
しかし、次回呼び出されるまでサービスを再開したくない場合はどうすればよいでしょうか。
繰り返しアラームをワンショット アラームに置き換えて ( を使用set()
)、前のアラームからの作業を終了する一環として次のアラームを設定できます。