Android:无法使用putExtra和getLongExtra将值从服务传递给活动

Android:无法使用putExtra和getLongExtra将值从服务传递给活动,android,android-activity,parameter-passing,background-service,Android,Android Activity,Parameter Passing,Background Service,我试图将值从服务传递到活动。以下是我的工作: 在我的服务中,我有: public class MyService extends Service { ... private long b; public static final String BROADCAST_ACTION = "test"; private final Handler handler = new Handler(); Intent intentDisp; ... @Override publi

我试图将值从服务传递到活动。以下是我的工作:

在我的服务中,我有:

public class MyService extends Service {
  ...
  private long b;
  public static final String BROADCAST_ACTION = "test";
  private final Handler handler = new Handler();
  Intent intentDisp;
  ...
  @Override
  public void onCreate() {
    ...
    b = 0;
    intentDisp = new Intent(BROADCAST_ACTION);
    ...
  }

  @Override
  public int onStartCommand( Intent intent, int flags, int startId ) {
    handler.removeCallbacks(sendUpdatesToUI);
    handler.postDelayed(sendUpdatesToUI, 1000); // 1 second  
    ...
  }

  private Runnable sendUpdatesToUI = new Runnable() {
  public void run() {
     b = (long) 2.0;
     intentDisp.putExtra("connected", b);
     sendBroadcast(intentDisp);             
     handler.postDelayed(this, 2000); // 5 seconds
  }
};
在我的主要活动中,我有:

public class MainActivity extends Activity implements OnClickListener {
  ...
  private Intent intentDisp1;

  @Override
  public void onCreate(Bundle savedInstanceState) {
    ...
    intentDisp1 = new Intent(this, MyService.class);
  }

  private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        updateUI(intent);       
    }
  };

  @Override
  public void onResume() {
    super.onResume();       
    startService(intentDisp1);
    registerReceiver(broadcastReceiver, new IntentFilter(MyService.BROADCAST_ACTION));
  }

  @Override
  protected void onPause() {
   super.onPause();
   unregisterReceiver(broadcastReceiver);
   stopService(intentDisp1); 
  }

  private void updateUI(Intent intent) {
  long c = intentDisp1.getLongExtra("connected",-1);
      ...
  }

调试程序时,当我从
myservice
传递值2时,我总是得到
c
的值-1。你知道怎么回事吗?

也许你应该调用getLongExtra(),而不是intentDisp1?@Egor:把它作为答案发布。@Egor谢谢,就是这样,我感谢你的帮助,我对你的回答投了赞成票。@dmon,事实上这不是答案,TJ1在编写代码时可能没有给予足够的关注。