Synchronizing activity with service state

by bee » Thu, 12 Mar 2009 10:22:31 GMT


Sponsored Links
 I've got an activity that lets a user start and stop a service, which
then hangs around putting up notifications periodically. I have a
toggle button for turning the service on and off, and I need it to
have the correct state whenever the user runs the activity, depending
on whether the service is already running or not.

Since there doesn't appear to be a way to directly query whether or
not the service is running, my solution was to have the service class
set a boolean "preference" to true in its onCreate() method, and set
it to false in its onDestroy(). The launcher activity in turn checks
the preference set by the service in its onCreate() and sets the
toggle's state accordingly.

service class:
private void savePreference(boolean state) {
        SharedPreferences settings = getSharedPreferences(PING_PREFS,0);
        SharedPreferences.Editor editor = settings.edit();
        editor.putBoolean(KEY_RUNNING, state);
        editor.commit();
}
onCreate() {
    ...
    savePreference(true);
}
onDestroy() {
    ...
    savePreference(false);
}

and the toggle button does:
private OnClickListener mTogListener = new OnClickListener() {
         public void onClick(View v) {
            // Perform action on clicks
            if (tog.isChecked()) {
                Toast.makeText(TimepieController.this, "ON",
Toast.LENGTH_SHORT).show();
                startService(new Intent(TimepieController.this,
                                        PingService.class));
                mStarted = true;
            } else {
                Toast.makeText(TimepieController.this, "OFF",
Toast.LENGTH_SHORT).show();
                        stopService(new Intent(TimepieController.this,
                                        PingService.class));
                        mStarted = false;
            }
        }
};

So it seems to me like this ought to work, however, after I stop the
service if I leave the launcher activity with the "Back" button and
then return, the toggle button is set back to on again. If I leave the
launcher activity with the "Home" button when I return the toggle
button remains off.

Is there some better/more correct way to synchronize the state of the
toggle button with the service? If not, any ideas on what is going
wrong? Why would the way I leave the app effect the state of the
preference? Does stopping the service not necessarily call the
service's onDestroy()?

--~--~---------~--~----~------------~-------~--~----~



Other Threads

1. tutorial for dev android application using sqlite

ive been searching for a good kick start/example on how to intergrate
sqlite with android application
but so far i found a few simple but not up to my expectation
do u guys know any tutorial for android application that use sqlite
database?

my application currently running with a local array to do a simple
comparison

i want to build application that compare string with sqlite
database...

tq in advance

-- 

2. How To add scrolling and zoom out and in effect in ImageView

Hi All,

Hope this may not be a noobish Question. I followed the tutorial in
using ImageView (Thanks to Google). Now I got stuck Im not able find
any method how to add scrolling and zoom in and out effect to image .
Can anyone please help me on this. Suggestions will be appreciated.

Thanks in advance

-- 

3. How to Customize Check box preference text color?

4. custom code to handle init on app install/update

5. Videos

6. unable to connect to the repository

7. Camera Preview problems