This is somewhat related to

http://groups.google.com/group/android-developers/browse_thread/thread/e83f452ae9f307b8/cc1a379efbc27b51?lnk=gst&q=toast+from+a+thread#cc1a379efbc27b51


I have a service running in the background.  I have a background
thread that gets a reference to the service from the application's
main activity.  But when the background thread calls a method in the
service to display a toast, I get the "Looper not initialized
exception".  Why, if I have a valid, bound reference to a Service,
does this still happen?


public MyActivity extends Activity{

    private static MyService service;

    public static MyService getMyService()

    private ServiceConnection sConnection = new  ServiceConnection(){
                public void onServiceConnected(ComponentName className, IBinder
service) {
                        service = 
((MyService.MyServiceBinder)service).getService();
                }

                public void onServiceDisconnected(ComponentName className) {
                        service = null;
                }

        };


    public void onCreate(Bundle savedInstanceState) {

       super.onCreate(savedInstanceState);

        Intent bindIntent = new Intent(this, NomadService.class);
        bindService(bindIntent, sConnection,
Context.BIND_AUTO_CREATE);



        // start the service.
        nomadServiceComponent = startService(
                        new Intent(this, MyService.class));


       new MyThread().start();
    }

}


public class MyService{

        // normal code for MyService omitted for discussion purposes


        public void toast(String t){
                Context ctx = getApplicationContext();
                try{
                        Toast.makeText(ctx, t, Toast.LENGTH_LONG);

                } catch (Throwable th){
                        Log.i("Nomad", th.getMessage());
                        th.printStackTrace();
                }
        }

}

public class MyThread extends Thread{

      public void run(){


          MyService s = MyActivity.getMyService();
          if (s != null)
               s.toast("You're toasted.");
               // causes this exception to occur: "Can't create
handler inside thread that has not called Looper.prepare()"
      }

}



Richard Schilling
Root Wireless



--~--~---------~--~----~------------~-------~--~----~
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