to dear Dianne,

I need to implement a remote background service and a service
controller activity. I want to present an effect which the controller
activity could know whether or not this service is already started,
and enable / disable the menu button which is used to start / bind /
unbind / stop the service.

However, the controller activity may be paused, or destoryed. I have
tried to write the status in a global variable, and with the activity
destoryed, the variable value lost. I also tried to write into a
SharedPreference, however, this will be persistent even the emulator
shuts down. In the later case, the preference status will mislead the
controller activity when the system is up next time.

So, I need a way to know whether a specified background service is
launched or not even if the controller activity is destroyed and back
then. :-)

Best regards,
Nicholas

On 1月6日, 下午3時40分, "Dianne Hackborn" <hack...@android.com> wrote:
> I would strongly recommend against that, it can be quite inefficient.  This
> API is really intended for applications to display a list of running
> services.
>
> If your service is running in the same process as the code wanting to check
> its state, you can just set a global variable while it is running.
>
> Why do you need to do this?
>
>
>
> On Mon, Jan 5, 2009 at 10:34 PM, yukinoba <ckmagic...@gmail.com> wrote:
>
> > Hi all,
>
> > I have already found out how to get this done. Please refer to the
> > following code:
>
> >    /**
> >     * Indicates whether the specified service is already started.
> > This
> >     * method queries the activity manager for launched services that
> > can
> >     * respond to an binding with an specific service name.
> >     * If no existed service is found, this method returns null.
> >     *
> >     * @param context The context of the activity
> >     * @param className The service full name to check for
> > availability.
> >     *
> >     * @return ComponentName if the service is already existed, NULL
> > otherwise.
> >     */
> >    public static ComponentName isServiceExisted(Context context,
> > String className)
> >    {
> >        ActivityManager activityManager =
> >                (ActivityManager)
> > context.getSystemService(ACTIVITY_SERVICE);
>
> >        List<ActivityManager.RunningServiceInfo> serviceList
> >        = activityManager.getRunningServices(Integer.MAX_VALUE);
>
> >        if(!(serviceList.size() > 0))
> >        {
> >                return null;
> >        }
>
> >        for(int i = 0; i < serviceList.size(); i++)
> >        {
> >                RunningServiceInfo serviceInfo = serviceList.get(i);
> >                ComponentName serviceName = serviceInfo.service;
>
> >                if(serviceName.getClassName().equals(className))
> >                {
> >                        return serviceName;
> >                }
> >        }
>
> >        return null;
> >    }
>
> > Best regards,
> > Nicholas
>
> > On 1月6日, 上午10時58分, yukinoba <ckmagic...@gmail.com> wrote:
> > > Ummm... does anyone know? have any ideas?
>
> > > On 1月5日, 下午12時05分, yukinoba <ckmagic...@gmail.com> wrote:
>
> > > > To dear all Android developers,
>
> > > > Is there a way to check whether a service is already started or not?
> > > > This issue has been discussed ealier (and much earlier) in April, in
> > > > the last year, on this forum.
>
> > > >http://groups.google.com/group/android-developers/browse_thread/threa.
> > ..
>
> > > > However, I wonder that does there have a new solution to this issue
> > > > rather than using a SharedPreferences to store the service status. Is
> > > > this functionality to check service is started or not has been added
> > > > to SDK1.0_r2 or Cupcake branch?
>
> > > > Thanks for any help or solutions! :-)
>
> > > > Best regards,
> > > > Nicholas
>
> --
> Dianne Hackborn
> Android framework engineer
> hack...@android.com
>
> Note: please don't send private questions to me, as I don't have time to
> provide private support.  All such questions should be posted on public
> forums, where I and others can see and answer them.
--~--~---------~--~----~------------~-------~--~----~
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