我正在构建一个需要将整数从一个服务传递到另一个服务的应用程序。
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;
}
}
由于日志,我知道FirstService中的value1应该是10。 但是value2是0,虽然它也应该是10。
我做错了什么?有人可以帮帮我吗?
答案 0 :(得分:0)
您将一个包打包到一个intent中,然后将一个值打包到该bundle中。所以你需要先阅读它们,首先是捆绑,然后是值。
Bundle zielkorb = intent.getBundleExtra("korb");
int bValue = zielkorb.getInt("Ente");
答案 1 :(得分:0)
问题在于您是否存储了传递给Bundle中第二个服务的值,虽然您在第二个服务中读取了它,但是您将其存储在变量bValue中,然后你输出Value1而不是bValue。在第二项服务中,您可以更改
System.err.println("SecondService bValue:="+Value1);
到
System.err.println("SecondService bValue:="+bValue);