Bob, am I taking the wrong approach here? I'm hardly satisfied that it's
just "working". I'd like to fully understand what's going on here.

Thanks,
J

On Mon, Apr 5, 2010 at 8:32 PM, Jason LeBlanc <[email protected]>wrote:

> Here is my onCreate(), that works:
> ===========================
>
>       // Called at the start of the full lifetime.
>       @Override
>       public void onCreate(Bundle savedInstanceState) {
>         super.onCreate(savedInstanceState);
>         setContentView(R.layout.light_control);
>
>         // Initialize activity.
>
>         // Obtain the Unit ID from the intent
>         Bundle extras = getIntent().getExtras();
>         unitId = extras.getInt("com.scs.haus.UNIT_ID", 0);
>
>         //  Bind to the Connection Service
>
>         Intent bindIntent = new Intent(LightController.this,
> ConnectionService.class);
>         bindService(bindIntent, mConnection,
> Context.BIND_AUTO_CREATE);
>
>         viewUnitProperties = new Runnable(){
>             @Override
>            public void run() {
>                       try {
>                     Thread.sleep(1000);
>                 } catch (InterruptedException e) {
>                     Log.e("SLEEP","I CANT SLEEP");
>                 }
>
>             getUnitProperties();
>             }
>         };
>         Thread thread =  new Thread(null, viewUnitProperties,
> "ViewUnitPropertiesThread");
>         thread.start();
>       }
> ===========================
> standard binder stuff
> ===========================
>         // Handles the connection between the service and activity
>         private ServiceConnection mConnection = new ServiceConnection() {
>             public void onServiceConnected(ComponentName className, IBinder
> service) {
>                 // Called when the connection is made
>                 serviceBinder =
> ((ConnectionService.MyBinder)service).getService();
>                 Log.i("LightController","Service Connected");
>             }
>
>             public void onServiceDisconnected(ComponentName className) {
>                 // Received when the service unexpectedly disconnects
>                 serviceBinder = null;
>                 Log.i("LightController","Service Disconnected");
>             }
>         };
> ===========================
>
> If I try to run the getUnitProperties() method outside of the Thread, I get
> a NullExceptionPointer AND the Log.i for onServiceConnected() shows up in
> the log after the exception.
>
> Thanks,
> J
>
>
> On Mon, Apr 5, 2010 at 8:08 PM, Bob Kerns <[email protected]> wrote:
>
>> It looks like you are trying to access the connection before the
>> onBind() method is called?
>>
>> You should NOT be sleeping the thread. You should be returning, and
>> then picking up your work once onBind() is called.
>>
>> You're actually blocking the service from running until you do return,
>> since it needs to run in that same thread.
>>
>> On Apr 5, 2:53 pm, Jason LeBlanc <[email protected]> wrote:
>> > Thanks for the response. I haven't meant to spam the group, I wasn't
>> sure if
>> > my post were posting.
>> >
>> > Problem Activity: LightController
>> > Service: ConnectionService
>> > Object within Service: Connection
>> >
>> > Basically all I am attempting to do is start the Service (from a Splash
>> > Screen Activity) which will provide a Connection to a hardware
>> controller. I
>> > hope to use this Connection to send and receive messages with the
>> hardware
>> > controller.
>> >
>> > I have been able to bind to the Service and send/receive commands with
>> the
>> > controller in the Activity that loads after the Splash Screen. The
>> problem
>> > arose when I tried to create another Activity (LightController) and
>> connect
>> > to the same Service. Since, I'm just learning I assumed I was doing
>> > something wrong with the Service (e.g. binding, unbinding, object
>> sharing,
>> > etc.)
>> >
>> > I finally realized in my LogCat that it was reporting that the Service
>> was
>> > connected after the bit of code I had written to test my connection. I'm
>> > still not sure why this happens. Perhaps something to do with the way
>> these
>> > commands are queued?
>> >
>> > _ begin code snippet from onCreate()_
>> >
>> > // Bind to the Connection Service
>> > Intent bindIntent = new Intent(LightController.this,
>> > ConnectionService.class);
>> > bindService(bindIntent, mConnection, Context.BIND_AUTO_CREATE);
>> >
>> > // Request data from the controller
>> > if (unit = serviceBinder.c.connected() ) {
>> > Log.i(Connection Service is connected);} else {
>> >
>> > Log.i(Connection Service is not connected);
>> >
>> > }
>> >
>> > _ end code snippet from onCreate()_
>> >
>> > Anyhow, the above if/then would result in a NullPointerException. I
>> > eventually moved it to a try/catch which resulted in a WARN instead of
>> an
>> > ERROR (see LogCat posted above).
>> >
>> > So finally, I have moved the if/then statement to a Thread and all is
>> well.
>> > I sleep for 1000 ms in the Thread prior to attempting to access the
>> > Connection. I am assuming this small time delay is what was needed in
>> order
>> > to establish the binding to the service. Is it that, or are all of the
>> > commands queued until the end of the onCreate() and then executed in
>> some
>> > order determined by Android? (can this be clarified?).
>> >
>> > Additionally, I should probably check to see if the binding has been
>> > completed instead of sleeping the thread for an arbitrary time period.
>> Then
>> > if the service is not bound, sleep for shorter time periods, and then
>> check
>> > again. This may improve the responsiveness of the app. I'm assuming a
>> > _while_ or _for_ loop would be a good method to perform this check.
>> >
>> > Thanks,
>> > J
>> >
>> > On Apr 5, 2010 1:42 PM, "jotobjects" <[email protected]> wrote:
>> >
>> > Certainly not obvious what you are doing or why it doesn't work.  Can
>> > you boil this down to a short example that causes the problem so we
>> > can see the code rather than just a long logcat?
>> >
>> > On Apr 5, 8:30 am, Jason LeBlanc <[email protected]> wrote:
>> >
>> > > Is there an obvious reason why ...
>> > > On Apr 4, 2010 9:01 AM, "Tunneling" <[email protected]> wrote:
>> >
>> > > I have a Connection objec...
>> > > [email protected]<android-developers%[email protected]><android-developers%2Bunsubs
>> [email protected]>
>> >
>> > <android-developers%[email protected]<android-developers%[email protected]><android-developers%252Bu
>> [email protected]>
>> >
>> > > For more options, visit this group athttp://
>> >
>> > groups.google.com/group/android-developers?hl=en
>> >
>> >
>> >
>> > > To unsubscribe, reply using "remove me" as the subject.
>> >
>> > --
>> >
>> > You received this message because you are subscribed to the Google
>> > Groups "Android Developers" group...
>>
>> --
>> 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]<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

Reply via email to