Назовите целое число от Сервиса к Сервису
Я создаю приложение, которое должно передавать целое число из одного сервиса в другой сервис.
FirstService
package com.jebinga.MyApp;
import android.app.Service;
import android.content.Intent;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
import android.util.Log;
import android.view.MenuItem;
import android.widget.TextView;
public class FirstService extends Service implements SensorEventListener {
int Value1=10;
@Override
public void onCreate() {
super.onCreate();
Bundle korb=new Bundle();
korb.putInt("Ente", Value1);
Intent in = new Intent(FirstService.this, SecondService.class);
in.putExtra("korb", korb);
this.startService(in);
System.err.println("FirstService Value1: "+Value1);
}
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
}
SecondService
package com.jebinga.MyApp;
import android.annotation.SuppressLint;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
import android.provider.Settings;
import android.provider.Settings.Global;
import android.util.Log;
public class SecondService extends Service{
int Value2;
public void onStartCommand(Intent intent, int startId){
super.onStartCommand(intent, startId, startId);
Bundle zielkorb = intent.getExtras();
int Value2 = zielkorb.getInt("Ente");
System.err.println("SecondService Value2:="+Value2);
}
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
}
Из журнала я знаю, что значение1 в FirstService равно 10, как и должно быть. Но значение2 равно 0, хотя оно также должно быть 10.
Что я сделал не так? Кто-нибудь может мне помочь?
2 ответа
Решение
Вы упаковали пакет в намерение, а затем значение в этот пакет. Таким образом, вы должны прочитать их, сначала пакет, а затем значение.
Bundle zielkorb = intent.getBundleExtra("korb");
int bValue = zielkorb.getInt("Ente");
Проблема в том, что вы сохраняете значение, переданное второму сервису в Bundle, и хотя вы читаете его во втором сервисе, вы сохраняете его в переменной bValue, а затем вместо этого выводите Value1 из bValue. Во втором сервисе вы можете изменить
System.err.println("SecondService bValue:="+Value1);
в
System.err.println("SecondService bValue:="+bValue);