0

誰でも助けることができます。BOOT_COMPLETED インテントで実行するサービスを構築したため、デバイスの起動時にサービスが開始されます。n 私の onStartCommand では、15 分ごとに実行するサービスを AlarmManger に登録しています。

これは機能しますが、onStartCommandが終了したときにサービスが停止しないことに気付きました-停止することはなく、onDestroyは決して呼び出されません。

寿命を制御すると思われる onStartCommand から整数を返す必要があります..

どの整数を返す必要がありますか?

私は何を間違っていますか?

少し早いですがお礼を

編集

現在、サービスは super.onStartCommand(......

これはデフォルトです。では、ここで何が返されているのでしょうか?

そして、それを削除した場合、クラスの onStartCommand の最初の行で (戻るのではなく) super.onStartCommand を呼び出すべきではありませんか?

4

2 に答える 2

1

を呼び出すと、作成済みのサービスにインテントonStartCommand()が渡されるだけです。メソッドの実行後に自分自身を強制終了することは想定されていません。

サービスを強制終了するには、 を使用すると、サービスのメソッドstopSelf()が呼び出されます。onDestroy()

onStartCommand の要件に応じて、次の値のいずれかを返すことができます。

  • START_CONTINUATION_MASK
  • START_FLAG_REDELIVERY
  • START_FLAG_RETRY
  • START_NOT_STICKY
  • START_REDELIVER_INTENT
  • START_STICKY
  • START_STICKY_COMPATIBILITY

詳細については、Androidサービスをよくお読みください。

于 2012-07-20T08:08:39.560 に答える
0

サービスライフサイクルのSDKドキュメントには、

この時点で、サービスは Context.stopService() または stopSelf() が呼び出されるまで実行を続けます

の戻り値についてonStartCommand (Intent intent, int flags, int startId)、ドキュメントは次のように述べています

戻り値は、システムがサービスの現在の開始状態に使用するセマンティクスを示します。これは、START_CONTINUATION_MASK ビットに関連付けられた定数の 1 つです。

public static final int START_CONTINUATION_MASK 以降: API レベル 5

onStartCommand(Intent, int, int) によって返されるビットは、サービスが強制終了された場合にサービスを継続する方法を記述しています。START_STICKY、START_NOT_STICKY、START_REDELIVER_INTENT、START_STICKY_COMPATIBILITY のいずれかです。

そのため、サービスを停止する場合は、Context.stopService()またはに電話する必要がありますService.stopSelf()

于 2012-07-20T08:07:05.617 に答える