サービスからアクティビティに値を渡そうとしています。これが私がすることです:
私のサービスでは、次のものがあります。
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);
...
}
c
プログラムをデバッグするとき、 から 2 の値を渡している間、常に -1 の値を取得しますMyServive
。何が間違っているのですか?