Hi,

I just tested the start & bind service approach and found some really weird 
stuff going on in the logcat output. Here's what I tried:

Step1: the main activity A is launched.
Step2: A's *onCreate* method attempts to connect with service S (launched in 
a separate process private to the activity) in the following way:

   1. Reads the SharedPreferences to determine if S is already started 
   (using a boolean flag)
   2. If S is not started, invokes *startService* with intent I (*new 
   Intent(this, MyService.class)*)
      - Also sets the flag in SharedPreferences to indicate service started
   3. Calls *bindService(intent, this, 0)* with the same intent I. This step 
   is always executed irrespective of whether S was started or not in 2.

Step3: activity A also implements the ServiceConnection interface and it 
logs the output on service connected/disconnected callbacks.

Now, when I execute these steps in the emulator (v2.2 API level 8), I see 
the following logcat output (note that all of it is generated as a result of 
executing A's *onCreate* method only):

12-21 15:14:01.722: INFO/ActivityManager(59): Starting activity: Intent { 
act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] 
flg=0x10200000 cmp=com.my.example/.activities.MyActivity }
12-21 15:14:01.893: INFO/ActivityManager(59): Start proc com.my.example for 
activity com.my.example/.activities.MyActivity: pid=544 uid=10041 
gids={3003, 1015}
12-21 15:14:02.543: INFO/MyActivity(544): Calling startServiceIfRequired  *<- 
this is Step 2*
12-21 15:14:02.552: INFO/MyActivity(544): Starting MyService
12-21 15:14:02.572: INFO/ActivityManager(59): Start proc 
com.my.example:myRemote for service com.my.example/.services.MyService: 
pid=550 uid=10041 gids={3003, 1015}  *<- first time service starts here*
12-21 15:14:02.602: INFO/MyActivity(544): Calling bindService  *<- this is 
Step 2.3*
12-21 15:14:02.993: INFO/ActivityManager(59): Displayed activity 
com.my.example/.activities.MyActivity: 1168 ms (total 1168 ms)
12-21 15:14:03.223: INFO/MyActivity(550): Inside service onCreate
12-21 15:14:03.223: INFO/MyActivity(550): Inside readServiceMetadata
12-21 15:14:03.243: INFO/MyActivity(550): Done readServiceMetadata
12-21 15:14:03.273: INFO/MyActivity(550): Inside initLocationManager
12-21 15:14:03.353: INFO/MyActivity(550): Done initLocationManager
12-21 15:14:03.353: INFO/MyActivity(550): My service started
12-21 15:14:03.384: INFO/MyActivity(550): Inside service onBind
12-21 15:14:03.393: INFO/MyActivity(544): Inside activity onServiceConnected
12-21 15:14:03.413: INFO/MyActivity(544): Inside activity 
onServiceDisConnected  *<- why ??? somehow android decides to kill this 
service*
12-21 15:14:03.423: INFO/MyActivity(550): Inside service onUnBind
12-21 15:14:03.423: INFO/MyActivity(550): Inside service onDestroy
12-21 15:14:03.433: INFO/MyActivity(550): My service stopped

As you can notice, right after the call to startService & bindService, 
android seems to start killing my service S without my activity even calling 
*unbindService*. I observed the exact same behavior even if I moved this 
service connection logic to the A's onStart method. 

Am I missing something basic here. Will you please help me ? Let me know if 
any more information is required.

Sincere Regards,
Kalyan

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