Skip to content
svenmeier edited this page Apr 24, 2012 · 35 revisions

Propoid-util offers convenience working with services and content.

Service tasks and listeners

TaskService offers an easy management of asynchronous tasks and notifications to registered listeners:

    public class FooService extends TaskService<FooListener> {

      protected void resolveTask(Intent intent) {
        schedule(new FooTask());
      }     
     
      private class FooTask extends Task {
        protected void onExecute() {
          // asynchronously execute task
          longRunningExecution();

          notifyListeners();
        }

        protected void onNotify(FooListener listener) {
           // notify listener on its handler
           listener.onFoo();
        }
      }
    }

To let your activity listen to tasks you just have to create a subclass of TaskListener and register it in onStart():

    TaskListener listener = new TaskListener() {
      public void onFoo() {
      } 
    };

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

      listener.register(context, FooService.class);
    }

Don't forget to deregister the listener in onDestroy():

    public void onDestroy() {
      listener.deregister()

      super.onDestroy();
    }

Preferences

Preference allows convenient typed access to a preference:

    Preference<Boolean> myBoolean = Preference.getBoolean(context, R.string.my_boolean);
    Preference<Integer> myInteger = Preference.getInteger(context, R.string.my_integer);

Thanks to the keys being declares in your strings.xml we have a build-time safe identification of preferences:

   <string name="my_boolean">my_boolean</string>
   <string name="my_integer">my_integer</string>

Most of the time (but not necessarily) you want the user to be able to change the preference:

    <CheckBoxPreference
        android:key="@string/my_boolean"
        android:title="@string/my_boolean_title"
        android:summary="@string/my_boolean_summary"
        android:defaultValue="true"
    />
    <EditTextPreference
        android:key="@string/my_integer"
        android:title="@string/my_integer_title"
        android:summary="@string/my_integer_summary"
        android:numeric="integer"
        android:defaultValue="10"
    />

Note that in the latter case - an EditTextPreference with numeric input - any entered String will automatically be converted to the requested type when accessed via Preference.

Clone this wiki locally