0

我正在构建一个需要将整数从一个服务传递到另一个服务的应用程序。

第一服务

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;
    }



}

二次服务

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。

我做错了什么?任何人都可以帮助我吗?

4

2 回答 2

0

您将一个包打包到一个意图中,然后将一个值打包到该包中。所以你需要把它们读出来,首先是包,然后是值。

Bundle zielkorb = intent.getBundleExtra("korb");
int bValue = zielkorb.getInt("Ente");
于 2014-05-18T12:48:28.170 回答
0

问题是你将传递给第二个服务的值存储在 Bundle 中,虽然你在第二个服务中读取它,但你将它存储在变量 bValue 中,然后你输出 Value1 b 值。在第二项服务中,您可以更改

System.err.println("SecondService bValue:="+Value1);

System.err.println("SecondService bValue:="+bValue);
于 2014-05-18T12:52:10.100 回答