2016-10-12 9 views
1

私はAndroidアプリケーションでフォアグラウンドサービスを使用しています。 documentationとしてAndroidのフォアグラウンドサービスでstartIdを増やした場合の影響は何ですか?

public int onStartCommand(Intent intent, int flags, int startId) { 
// doing my staff here 
} 

は言った:そして、私は以下のように、サービスのメソッドonStartCommandオーバーライドしていたクライアントが明示的にSTARTSERVICEを呼び出すことにより、サービス を起動するたびに、システムによって呼び出され

(意図)それが供給された引数 と開始要求を表す固有の整数トークンを提供する。

そして

startId int型: 起動するには、この特定の要求を表す一意の整数。 stopSelfResult(int)とともに使用します。

私はサービスを正しく使用しており、サービスは正常に動作しています。

私の質問は:ドキュメントが言ったように

私はサービスを開始するたびに、startIdが増加しています。私が明らかにしていないことは、startIdの増加がもたらす影響は何ですか?メモリを増やしているのか、アプリのパフォーマンスに影響しますか? (たとえば、startIdが1000を超えて増加している場合)

+0

これはサービス#stopSelfResult(int startId)で使用され、そのIDだけです。 – pskink

+0

アプリケーションから同じサービスを繰り返し開始しますか?なぜあなたはこれをやりますか?あなたのケースについて説明したら、私は答えます –

+0

@AmirZiarati何が間違っていますか?あなたは 'IntentService'に新しいリクエストをどのように渡しますか? – pskink

答えて

0

これは、リクエストIDのようなIDのトークンに過ぎません。startActivityByResultです。

サービスを複数回起動する場合は、このトークンによってサービスを複数回起動することができます。

開始サービスを2回呼び出して、2回目の呼び出しを停止したいとします。あなたはそれを参照する何かを必要とし、何かがこのIDです。

このIDを増やすことは、メモリリークの兆候であるか、それだけのIDではありません。しかし、アプリケーションで複数回サービスを開始する必要があるケースはまれです。だからあなたがしていることを世話してください。あなたが本当に必要でない場合は、単一のサービスの複数のインスタンスを起動しないでください。

+1

''サービスを2回起動してから2番目のインスタンスを停止したいとします。 ''実際にはサービスは2番目のインスタンスを持つことができません。そのサインン – pskink

+0

私の答えを編集してください;)tnx –

関連する問題