Назовите целое число от Сервиса к Сервису

Я создаю приложение, которое должно передавать целое число из одного сервиса в другой сервис.

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);
Другие вопросы по тегам