I spent some more time and this is what I found so far. - An app cannot bind to a service or instantiate a service if the service is declared in a jar file (that is not a Android library). Note that I'm just building a jar file using javac compiler and jar utility, without the need for AndroidManifest xml file. I tried creating a TestService class that extends Service class and built that into a jar. In a test app, I imported the jar file and put a break point in onStart() and onCreate() methods of TestService class. In the app I tried calling both bindService and startService, both of them return a false or a null value and the debugger never breaks in onStart() or onCreate(). Both these methods had one line implementations with a just a call to their super class like super.onStart().
- In the next step I moved the TestService outside of the jar into an Android library (in Eclipse enable checkbox "Is Library" or project.properties should contain android.Library=true ). I built the library and included it into the test app. Now i can instantiate the service using bindService API from the app, the debugger breaks in onStart() and onCreate() methods of TestService class. On Monday, February 11, 2013 4:30:56 PM UTC-8, Lew wrote: > > RKSHR wrote: >> >> No the JAR is not set up as a Library project, as all I have is, compile >> the classes using javac and then bundle them into a jar using jar builder. > > > You should probably build it as a library project, since it does have > something specific to Android in it. > > I'm not expert in library projects, but as I understand they're the way to > package Android stuff for other Android stuff. > > > By "nothing specific to android [sic]", I meant the classes used within > the service, other than the obvious service class. I did not have this > service class before and there is a singleton factory class that the app > was using to instantiate. Now I have moved the factory instantiation into > the service class. I want the app to just bind to the service, so the > factory instantiation happens in the background within the service. > > > There's a world of difference between "nothing" and "nothing other than... > ". > > And that difference might be the difference that makes the difference. You > might want to investigate. > > >> Lew wrote: >>> >>> RKSHR wrote: >>> >>>> I did make sure that there were no R.xx classes in the service, infact >>>> I dont need any resources in the service. I did double check again and >>>> nothing was present, although an import definition to resources class was >>>> left there. I wasn't sure if it would make a difference, but I removed >>>> that definition anyway and recompiled the jar without any different >>>> result. >>>> The application loading the jar, still cannot bind to the service. The >>>> service is a very simple class that just instantiates a set of regular >>>> java >>>> classes (nothing specific to Android). I'm not even able to debug into >>>> the >>>> service, I have a break point at onStart() and onCreate() methods and it >>>> never falls there. I will continue looking. .thanks. >>> >>> >>> "nothing specific to Android" is obviously false since there's a service >>> class in there. >>> >>> Is the JAR source set up as an Android library project? >>> >>> > -- -- 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 --- You received this message because you are subscribed to the Google Groups "Android Developers" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/groups/opt_out.

