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