Access data members of background service
<p>I have an Activity communicating with and directly accessing a background Service's data members through get functions. The problem is that I can't seem to be able to access the actual data members. For instance, I try and get an ArrayList with a few items in it but I just receive an empty ArrayList.</p>

<p>This code is almost directly from the local service tutorial in the Android Service class doc. </p>

<p>Here's my service: CommunicationService</p>

<pre><code>public static final String BROADCAST_ALARM = "Alarm";
private Intent mAlarmBroadcast = new Intent(BROADCAST_ALARM);

private AlarmList mAlarms;

class TempTask extends AsyncTask&lt;String, Void, Void&gt; {

    private int id = 0;

    @Override
    protected Void doInBackground(String... params) {
        while (true) {
            mAlarms.addAlarm(++id, "Description", "Label");


            sendBroadcast(mAlarmBroadcast);

            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {

            }
        }
    }
}

@Override
public void onCreate() {
    super.onCreate();

    mAlarms = new AlarmList();
    new TempTask().execute("test");
}

public AlarmList getAlarmList() {
    return mAlarms;
}
</code></pre>

<p>And here's my bound activity:</p>

<pre><code>private CommunicationService mComService = null;

private IconicAdapter mListAdapter;

@Override
public void onCreate(Bundle icicle) {
    super.onCreate(icicle);

    setContentView(R.layout.alarm_list);

    mListAdapter = new IconicAdapter(this, R.layout.row, R.id.label);
    setListAdapter(mListAdapter);

    // Attempt to bind with the service.
    bindService(new Intent(this, CommunicationService.class), mOnService, BIND_AUTO_CREATE);
}

/*
 * Receives broadcasts from the bound service.
 */
private BroadcastReceiver receiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        if (action != null) {
            if (action.equals(CommunicationService.BROADCAST_ALARM)) {
                AlarmList alarmList = mComService.getAlarmList();

                ArrayList&lt;Alarm&gt; alarms = alarmList.getAllAlarms();
                /* THIS IS WHERE THE PROBLEM EXISTS.
                 * alarms is an ArrayList of size 0, where as if you break
                 * over the actual data member in the service class, it is
                 * full of elements.
                 */
                mListAdapter.addAll(alarms);
            }
        }
    }
};

private ServiceConnection mOnService = new ServiceConnection() {
    @Override
    public void onServiceConnected(ComponentName name, IBinder binder) {
        mComService = ((CommunicationService.LocalBinder) binder).getService();

        appendAlarms();
    }

    @Override
    public void onServiceDisconnected(ComponentName name) {
        // This is called when the connection with the service has been
        // unexpectedly disconnected -- that is, its process crashed.
        mComService = null;
    }
};
</code></pre>

<p>Thank you for your time.</p>
