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在编写代码时可能没有给予足够的关注。