Android 无法将数据从活动获取到服务
我是个新手,但有人告诉我在这里可以得到很好的帮助。我和一个朋友正在玩Android应用程序(使用ADT) 下面是我们制作程序的方法:在活动中,用户在加速计上设置X轴和Y轴的阈值。当用户点击“开始”按钮时,将调用startService并启动服务 TiltService设计为在后台运行,始终在手机上运行,无需用户交互。TiltService不断将阈值与加速计值进行比较,如果它们关闭,则会振动 我的问题是,我似乎无法正确获取putExtra()数据。我已经在我的服务中重写了onstart命令,但是当我将getExtras()保存到bundle中时,会收到消息“unreachable code” 这是相关代码(我可以发布整个内容,只是不想阻塞页面) 倾斜度Android 无法将数据从活动获取到服务,android,service,android-intent,Android,Service,Android Intent,我是个新手,但有人告诉我在这里可以得到很好的帮助。我和一个朋友正在玩Android应用程序(使用ADT) 下面是我们制作程序的方法:在活动中,用户在加速计上设置X轴和Y轴的阈值。当用户点击“开始”按钮时,将调用startService并启动服务 TiltService设计为在后台运行,始终在手机上运行,无需用户交互。TiltService不断将阈值与加速计值进行比较,如果它们关闭,则会振动 我的问题是,我似乎无法正确获取putExtra()数据。我已经在我的服务中重写了onstart命令,但是当
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语句。