web-dev-qa-db-ja.com

サービスでgetIntentメソッドを呼び出す

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

では、どうすればアクティビティからサービスにパラメータを送信できますか?

20
CodingDecoding

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

 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(インテントインテント、intフラグ、int startId)

IntentService

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

Protected abstract void onHandleIntent(Intent intent)

59
Lunar

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

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

サービスの。したがって、パラメータとして意図を持つこのメソッドからデータを受け取る

2
Atul Bhardwaj