I see - just to be clear - you'll only be operating a GUI in a separate
process if you've either got 2 separate applications, or one application
where an activity within it explicitly specifies it wants to run in a
separate process.

I only say this because I didn't understand the term 'process' initially - I
thought when an application spawned a service, by the fact that service
could live on after the activity that spawned it was killed, it would be
running in a different process!

Good luck!

On 21 May 2010 10:41, FrankG <frankgru...@googlemail.com> wrote:

> Thanks a lot for this hint.
>
> But in my case I have an independent  GUI in a seperate prozess.
>
> I must check whether I can avoid this and use this local binding
> pattern.
>
> Thanks a lot !
>
>   Frank
>
>
>
> On 19 Mai, 09:46, redders <redders6...@googlemail.com> wrote:
> > Looking into this further - I now understand the local binding pattern
> > that Mark mentioned. There's a good example in the api section of the
> > code examples that ship with the android SDK.
> >
> > Essentially as we are not using more than one process there's no need
> > for IPC (*inter process* communication) interfaces defined in AIDL.
> > Objects passed do not need to be marshalled across the barriers in the
> > same way they would with a remote service running in a separate
> > process.
> >
> > I strongly advise you to take a look at:
> > [SDK DIRECTORY]/samples/ApiDemos/src/com/example/android/apis/app/
> > LocalServiceBinding.java  (an activity to bind to a local service)
> > and
> > [SDK DIRECTORY]/samples/ApiDemos/src/com/example/android/apis/app/
> > LocalService.java (the service itself).
> >
> > On May 19, 8:06 am, FrankG <frankgru...@googlemail.com> wrote:
> >
> >
> >
> >
> >
> > > At first many thanks to Mark Murphy for his very detailed answer.
> >
> > > To the last post : I must say I use currently a mixture between
> > > 1) and 2) ..
> >
> > > In my case the service uses Intents to inform othter apps.
> >
> > > And the services provides an interface via aidl.
> >
> > > But I also thinking about a pure 1) "Intent only" solution.
> >
> > > From Marks post I got the suggestion, to use a start intent , when
> > > something
> > > happens on service side and no activity callback "handle" ist set, to
> > > send a start intent.
> >
> > > The service can keep a kind of status flag, to know, whether the
> > > corresponding
> > > activity is running. And the activity on the other side must send an
> > > intent to the service,
> > > when the activity will be finished ?
> >
> > > Is this a bad design ?
> >
> > > Thanks a lot !
> >
> > >   Frank
> >
> > > On 18 Mai, 22:48, redders <redders6...@googlemail.com> wrote:
> >
> > > > Hi,
> >
> > > > I have a similar question. My application has a long running service
> > > > that acts as a TCP client. There is also an activity which needs to
> be
> > > > able to pass messages to the service which will then send them to the
> > > > TCP server. In turn, the service needs to 'forward' the reply it gets
> > > > from the TCP Server to the activity, which performs an action as a
> > > > result.
> >
> > > > I understand there are [at least] two ways to deal with this:
> >
> > > > 1. Broadcast receivers and intents: The service and activity each
> > > > register a broadcast receiver, and broadcast intents to communicate
> > > > with each other, using putExtras for the data.
> >
> > > > 2. IPC using AIDL. I define two interfaces (activity to service, and
> > > > service to activity), make my TCP message class implement parcelable.
> > > > When my activity starts up, I bind to the service (if running, or
> > > > create it if not), then receive the Service->Activity aidl Stub, then
> > > > use a method defined within that to pass the Activity->Service Stub.
> > > > Service and client now both have IPC Stubs and can call the each
> > > > other's methods that have been defined in the interfaces.
> >
> > > > So my questions:
> > > > i) is the above roughly correct?
> > > > ii) are there any other sensible ways to do it? (e.g. I have heard
> the
> > > > term Local binder / local binding pattern in the last post - is that
> > > > the same as [2]?)
> > > > iii) which is most appropriate for my situation?
> >
> > > > Any help would be much appreciated - this is really confusing me.
> >
> > > > Cheers
> >
> > > > ~redders.
> >
> > > > On May 3, 1:02 pm, Mark Murphy <mmur...@commonsware.com> wrote:
> >
> > > > > FrankG wrote:
> > > > > > I have short question to your example :
> >
> > > > > > If I understood it right, the Broadcast from the
> WeatherPlusService
> > > > > > will not start
> > > > > > up the WeatherPlus Activity ?
> >
> > > > > Correct. In this case, the WeatherPlus activity is already running.
> >
> > > > > > So how must the example be changed, that the first broadcast will
> > > > > > startup the activity
> > > > > > and the next ones are normal broadcast to send the new status to
> the
> > > > > > activity.
> >
> > > > > > I know that I can use startActivity(Intent) to startup the
> > > > > > activity ..and use then sendBroadcast(Intent),
> > > > > > but you cannot know, whether then your Activity is still running.
> >
> > > > > Sure you can, though the sendBroadcast() model is probably not the
> right
> > > > > one to use.
> >
> > > > > Have the activity bind to the service using the local binding
> pattern
> > > > > and have it register a callback/listener object with the service
> once bound.
> >
> > > > > When the "devise status changed", the service looks to see if it
> has a
> > > > > listener from an activity.
> >
> > > > > -- If yes, it calls a method on that listener to tell the activity
> to
> > > > > display the dialog or whatever.
> >
> > > > > -- If no, the service starts the activity with an extra indicating
> "hey,
> > > > > please go ahead and pop up that dialog, please"
> >
> > > > > Bear in mind that popping up an activity from a service is a very
> bad
> > > > > practice except in unusual circumstances (alarm clock, incoming
> phone
> > > > > call). If the user is in the middle of doing something else, and
> you
> > > > > interrupt them forcibly, and they do not think your interruption is
> > > > > warranted, they will get...cranky. :-)
> >
> > > > > --
> > > > > Mark Murphy (a Commons Guy)http://commonsware.com|
> http://github.com/commonsguyhttp://commonsware.com/blog|http://twitter.com/commonsguy
> >
> > > > > _Android Programming Tutorials_ Version 2.0 Available!
> >
> > > > > --
> > > > > You received this message because you are subscribed to the Google
> > > > > Groups "Android Developers" group.
> > > > > To post to this group, send email to
> android-developers@googlegroups.com
> > > > > To unsubscribe from this group, send email to
> > > > > android-developers+unsubscr...@googlegroups.com<android-developers%2bunsubscr...@googlegroups.com>
> > > > > For more options, visit this group athttp://
> groups.google.com/group/android-developers?hl=en
> >
> > > > --
> > > > You received this message because you are subscribed to the Google
> > > > Groups "Android Developers" group.
> > > > To post to this group, send email to
> android-developers@googlegroups.com
> > > > To unsubscribe from this group, send email to
> > > > android-developers+unsubscr...@googlegroups.com<android-developers%2bunsubscr...@googlegroups.com>
> > > > For more options, visit this group athttp://
> groups.google.com/group/android-developers?hl=en-ZitiertenText ausblenden
> -
> >
> > > > - Zitierten Text anzeigen -
> >
> > > --
> > > You received this message because you are subscribed to the Google
> > > Groups "Android Developers" group.
> > > To post to this group, send email to
> android-developers@googlegroups.com
> > > To unsubscribe from this group, send email to
> > > android-developers+unsubscr...@googlegroups.com<android-developers%2bunsubscr...@googlegroups.com>
> > > For more options, visit this group athttp://
> groups.google.com/group/android-developers?hl=en
> >
> > --
> > You received this message because you are subscribed to the Google
> > Groups "Android Developers" group.
> > To post to this group, send email to android-developers@googlegroups.com
> > To unsubscribe from this group, send email to
> > android-developers+unsubscr...@googlegroups.com<android-developers%2bunsubscr...@googlegroups.com>
> > For more options, visit this group athttp://
> groups.google.com/group/android-developers?hl=en- Zitierten Text
> ausblenden -
> >
> > - Zitierten Text anzeigen -
>
> --
> You received this message because you are subscribed to the Google
> Groups "Android Developers" group.
> To post to this group, send email to android-developers@googlegroups.com
> To unsubscribe from this group, send email to
> android-developers+unsubscr...@googlegroups.com<android-developers%2bunsubscr...@googlegroups.com>
> For more options, visit this group at
> http://groups.google.com/group/android-developers?hl=en
>

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to