24

MyActivity.class から TestService.class にパラメーターを渡す必要があります。MyActivity は Activity クラスで、TestService はメッセージを送信するために作成した Service です。Activity から Service にパラメーターを渡す必要がありますがIntent i = getIntent();、サービス クラスで呼び出すと、 getIntent() is undefinedというエラーが発生します。

では、Activity から Service にパラメーターを送信するにはどうすればよいでしょうか?

4

2 に答える 2

68

このようにサービスを開始します。

 Intent ir=new Intent(this, Service.class); 
 ir.putExtra("data", data); 
 this.startService(ir); 

インテント エクストラとしてデータを添付します。

次に、サービスからデータを取得します。

data=(String) intent.getExtras().get("data"); 

そのため、onHandleIntent または onStartCommand Intent パラメーターのいずれかからパラメーターにアクセスできます。(実行しているサービスのタイプに応じて)例;

サービス

protected void onStartCommand (Intent intent, int flags, int startId) {
    data=(String) intent.getExtras().get("data"); 
}

public int onStartCommand (Intent インテント、int フラグ、int startId)

インテントサービス

protected void onHandleIntent(Intent intent) {
    data=(String) intent.getExtras().get("data"); 
}

protected abstract void onHandleIntent (Intent インテント)

于 2012-08-14T09:19:51.187 に答える
2

インテント(データを持つ)でサービスを開始すると、そのインテントはメソッド
onStart(Intent intent, int startId) または

onStartCommand (Intent intent, int flags, int startId)
{
this **intent** is your intent with data
}

あなたのサービスの.Soパラメータとしてインテントを持つこのメソッドからデータを受け取ります

于 2012-08-14T09:34:25.323 に答える