Android 无法将数据从活动获取到服务

Android 无法将数据从活动获取到服务,android,service,android-intent,Android,Service,Android Intent,我是个新手,但有人告诉我在这里可以得到很好的帮助。我和一个朋友正在玩Android应用程序(使用ADT) 下面是我们制作程序的方法:在活动中,用户在加速计上设置X轴和Y轴的阈值。当用户点击“开始”按钮时,将调用startService并启动服务 TiltService设计为在后台运行,始终在手机上运行,无需用户交互。TiltService不断将阈值与加速计值进行比较,如果它们关闭,则会振动 我的问题是,我似乎无法正确获取putExtra()数据。我已经在我的服务中重写了onstart命令,但是当

我是个新手,但有人告诉我在这里可以得到很好的帮助。我和一个朋友正在玩Android应用程序(使用ADT)

下面是我们制作程序的方法:在活动中,用户在加速计上设置X轴和Y轴的阈值。当用户点击“开始”按钮时,将调用startService并启动服务

TiltService设计为在后台运行,始终在手机上运行,无需用户交互。TiltService不断将阈值与加速计值进行比较,如果它们关闭,则会振动

我的问题是,我似乎无法正确获取putExtra()数据。我已经在我的服务中重写了onstart命令,但是当我将getExtras()保存到bundle中时,会收到消息“unreachable code”

这是相关代码(我可以发布整个内容,只是不想阻塞页面)

倾斜度

private Intent dataIntent = null;
private float FORWARD_THRESHOLD = 4f;
private float BACKWARD_THRESHOLD = -3f;
private float UPWARD_THRESHOLD = 3f;
private float DOWNWARD_THRESHOLD = -3f;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        bstart = (Button)findViewById(R.id.btnStart);

        dataIntent = new Intent();
        dataIntent.setClass(TiltMeterActivity.this, TiltService.class);
        dataIntent.putExtra("fowardThreshold", FORWARD_THRESHOLD);
        dataIntent.putExtra("backwardThreshold", FORWARD_THRESHOLD);
        dataIntent.putExtra("upwardThreshold", UPWARD_THRESHOLD);
        dataIntent.putExtra("downwardThreshold", DOWNWARD_THRESHOLD);

        bStart.setOnclickListener(new View.OnClickListener() {
            public void onClick(View v) {
                startService(dataIntent);
            }
        });
    }
倾斜服务

private Bundle thresholdData = new Bundle();

private float Z_FORWARD_THRESHOLD = 0f;
private float Z_BACKWARD_THRESHOLD = 0f;
private float Y_UPWARD_THRESHOLD = 0f;
private float Y_DOWNWARD_THRESHOLD = 0f;

public int onStartCommand(Intent intent, int flags, int startId) {
        // TODO Auto-generated method stub
        return super.onStartCommand(intent, flags, startId);


        thresholdData = intent.getExtras(); // The problem area (Eclipse says this is unreachable code)


        Z_FORWARD_THRESHOLD = thresholdData.getFloat("forwardThreshold");
        Z_BACKWARD_THRESHOLD = thresholdData.getFloat("backwardThreshold");
        Y_UPWARD_THRESHOLD = thresholdData.getFloat("upwardThreshold");
        Y_DOWNWARD_THRESHOLD = thresholdData.getFloat("downwardThreshold");

        return START_STICKY;
    }

我以为我了解意图如何传递数据的基本原理,但我想我不知道。很明显我错过了什么吗?感谢您的帮助

onstart命令中的
return
语句放到函数的最后一行

我认为您应该使用
thresholdData.getString(forwardThreshold)
来获取数据。

好的,我添加了它(作为START\u STICKY),这是我所需要的,根据抱歉,没有看到您返回的START\u STICKY station。在这种情况下,您只需要删除第一条return语句。