Donal,

You having to call Looper.prepare makes it seem like you're not creating your task and calling its execute() from the UI thread.

Is that so? The docs is actually quite clear on this, see "Threading rules":

http://developer.android.com/reference/android/os/AsyncTask.html

13.09.2010 18:50, Donal Rafferty пишет:
Kostya,

I do create a new Task as follows everytime:

new SelectRingtoneTask().execute();

But I had to use Looper.prepare(); to get it to work in my Service, this could be causing an issue?

Is there a proper way to use a AsyncTask in a Service without needing to call Looper.prepare();?

2010/9/13 Kostya Vasilyev <[email protected] <mailto:[email protected]>>

    Donal,

    It sort of seems like you reuse the same task over and over.

    What happens if you create a new task each time you need to
    perform the asynchronous operation?

    -- Kostya

    13.09.2010 17:44, Donal Rafferty пишет:
    Kostya,

    Thanks, that conversation can be seen here:

    
http://groups.google.com/group/android-developers/browse_thread/thread/07ea01892ee7a5f4/9f71428217c2cd44

    However the condition is in the cancel code, which I no longer
    use as I am running the code in a Service so I have no need to
    cancel it.

    2010/9/13 Kostya Vasilyev <[email protected]
    <mailto:[email protected]>>

        Donal,

        Search the list: there was a post within the last month (I
        think) from Romain Guy about some kind of thread race issue
        in AsyncTask having been fixed in Froyo (or was it
        post-Froyo?) - anyway, it's somewhere in the archives.

        -- Kostya

        13.09.2010 16:07, Donal Rafferty пишет:
        Sorry I meant only the preExecute is run

        On Mon, Sep 13, 2010 at 1:05 PM, Donal Rafferty
        <[email protected] <mailto:[email protected]>> wrote:

            I have managed to implement the Task in my Service now
            but the original problem still remains.

            I dont cancel the Task at all in my service, I simply
            play the ringtone in the postExecute method of the
            Asynctask if a flag is true, if its not I dont.

            But I get the same issue, after a couple of runs the
            AsyncTask simply stops getting to the doInBackground
            method, only the postExecute method is run.

            Its very strange and really annoying me now.

            Is there any reason why an AsyncTask would behave like
            this without cancel being used?


            On Mon, Sep 13, 2010 at 10:58 AM, Donal Rafferty
            <[email protected] <mailto:[email protected]>> wrote:

                Monday morning coding! :)

                I return my aidl definition in my service's onBind:

                @Override
                    public IBinder onBind(Intent arg0) {
                        Log.d("XXX", "Status: onBind Called");
                        return myServiceStub;
                    }

                    IBinder myServiceStub = new IMyService.Stub(){

                     //aidl methods

                    };

                And use this to call methods from my Activity, so I
                would need to be able to import
                android.media.Ringtone in my aidl definition but I cant.

                So I'm still stuck with it not working :(


                On Mon, Sep 13, 2010 at 10:32 AM, Kostya Vasilyev
                <[email protected] <mailto:[email protected]>> wrote:

                    Donal,

                    No, a service is a service, and a binder is a
                    binder.

                    The binder you get in the callback is the binder
                    returned by the service's onBind.

                    This example:

                    
http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/LocalService.html

                    has a binder implementation that returns a
                    reference to its service, so you can do this

                    public void onServiceConnected(ComponentName
                    className,
                                 IBinder binder) {

                    LocalService.LocalBinder binder =
                    (LocalService.LocalBinder) binder;
                    *LocalService service = binder.getService();*
                    }

                    This example has one flaw: it leaks a service
                    reference (since LocalBinder is a non-static
                    inner class of LocalService). Using a static
                    inner or a top-level class for LocalBinder,
                    fixes that (AFAIK).

                    -- Kostya

                    13.09.2010 13:16, Donal Rafferty пишет:
                    09-13 10:06:53.566:
                    ERROR/AndroidRuntime(18791): Uncaught handler:
                    thread main exiting due to uncaught exception
                    09-13 10:06:53.676:
                    ERROR/AndroidRuntime(18791):
                    java.lang.ClassCastException:
                    com.xxx.phone.MyService$1
                    09-13 10:06:53.676:
                    ERROR/AndroidRuntime(18791):     at
                    
com.xxx.phone.ui.MyActivity$2.onServiceConnected(MyActivity.java:515)

                    So it doesn't like the cast from binder to Service?

                    How can I fix that do you know? What am I
                    missing from the example?


-- Kostya Vasilyev -- WiFi Manager + pretty widget --http://kmansoft.wordpress.com

-- You received this message because you are
                    subscribed to the Google
                    Groups "Android Developers" group.
                    To post to this group, send email to
                    [email protected]
                    <mailto:[email protected]>
                    To unsubscribe from this group, send email to
                    [email protected]
                    <mailto:android-developers%[email protected]>
                    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
        [email protected]
        <mailto:[email protected]>
        To unsubscribe from this group, send email to
        [email protected]
        <mailto:[email protected]>
        For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en


-- Kostya Vasilyev -- WiFi Manager + pretty widget --http://kmansoft.wordpress.com

-- You received this message because you are subscribed to the
        Google
        Groups "Android Developers" group.
        To post to this group, send email to
        [email protected]
        <mailto:[email protected]>
        To unsubscribe from this group, send email to
        [email protected]
        <mailto:android-developers%[email protected]>
        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
    [email protected]
    <mailto:[email protected]>
    To unsubscribe from this group, send email to
    [email protected]
    <mailto:[email protected]>
    For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en


-- Kostya Vasilyev -- WiFi Manager + pretty widget --http://kmansoft.wordpress.com

-- You received this message because you are subscribed to the Google
    Groups "Android Developers" group.
    To post to this group, send email to
    [email protected]
    <mailto:[email protected]>
    To unsubscribe from this group, send email to
    [email protected]
    <mailto:android-developers%[email protected]>
    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 [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en


--
Kostya Vasilyev -- WiFi Manager + pretty widget -- http://kmansoft.wordpress.com

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

Reply via email to