2011-01-09 12 views
52

私はアプリケーションにサービスとブロードキャストレシーバを持っていますが、ブロードキャストレシーバから直接サービスを起動するにはどうすればよいですか?を使用してBroadcastReceiverからサービスを起動する

startService(new Intent(this, MyService.class)); 

ブロードキャストレシーバー、任意のアイデアで動作しないのですか?

ありがとうございます!

EDIT:

context.startService(..)。

私はそのようにする必要があり、コンテキスト一部

答えて

84

context.startService(..);

+2

完璧な答え。それは非常に小さな問題の読書で修正されました。 – Pachonk

+1

このリンクも確認してください。https://groups.google.com/forum/#!topic/android-developers/WVoO8kQCFF0 context.startService(new Intent(MusicService.ACTION_PAUSE、null、context、MusicService.class)); – cwhsu

+2

これは非常に役に立ちました。 –

51

を忘れてはいけない忘れてしまった作品:

Intent i = new Intent(context, YourServiceName.class); 
context.startService(i); 

を追加してくださいママへのサービスnifest.xml

+0

典型的な目録アイテム(、同じ「レベル」はとなります):

2

ベストプラクティス:

BroadcastReceiverから始まる特にながら意図を作成する際は、コンテキストとしてこのを取るいけません。 サービス・コンポーネントを開始するには、あなたのBroadcastReceiveronReceive方法からcontextを使用context.getApplicationContext()

以下のような
Intent intent = new Intent(context.getApplicationContext(), classNAME); 
context.getApplicationContext().startService(intent); 
4

してください。

@Override 
public void onReceive(Context context, Intent intent) { 
     Intent serviceIntent = new Intent(context, YourService.class); 
     context.startService(serviceIntent); 
} 
関連する問題