Hi, I had the same problem as you do (sharing a TCP connection between activities) and I must with Dianne that if this is the case then you had better use a singleton. In my case I needed different apps to use one connection. This was not possible with a singleton because each app would call a new instance of the singleton (as weird as this sounds) even thoug hthe singleton I made was inside the Platform. Anyway, in my case, I had to use a service (it causes a major degradation in speed ), but I wouldn't recommend it
On Tuesday, April 17, 2012 12:26:13 AM UTC+3, Kristopher Micinski wrote: > > I would agree, the best thing for this would be a service that you can > bind do and do AIDL calls through, along with coordinating other > things. Passing the raw socket can be accomplished through the > application object, though that sounds fairly dirty to me. This is a > fairly common use case (in chat clients, etc.., although you > theoretically shouldn't be this bandwidth heavy..), and one which I > believe is typically implemented via services. > > On Mon, Apr 16, 2012 at 12:31 PM, Tonez <apires...@gmail.com> wrote: > > Hi Everyone, > > > > I'm building an Android app which uses TCP sockets to communicate with > > a .net server application. The android app as a whole relies quite > > heavily on TCP and as such nearly all the features in the app require > > writing to and listening from a socket stream. I'm trying to > > determine what the best design approach is for having more than one > > activity utilize a live active socket. > > > > I've recently just finished building an iPhone version of this app, > > the way in which I got each feature (different view controllers) to > > use one live active socket connection was by passing the live socket > > instance to each view controller, each view controller would then > > retain ownership of that socket and as such the delegate methods which > > fire when a transmission is received work as expected. Trying to > > simulate this design in Android is proving to be a pain because I > > can't pass a live socket instance to another activity as part of an > > intent parameter. > > > > If I wanted to have activity A listen for incoming TCP data, and then > > navigate to Activity B but then have activity B send TCP data to > > the .net server and of-course spawn a new thread to listen for > > incoming TCP data - what would be the best approach to achieve this? > > > > At the moment what I have is as follows: activity A spawns a new > > thread listening for incoming TCP data, activity A can communicate > > with the .net server perfectly fine. When I navigate to activity B > > and then want to communicate with the .net server - creating a new > > socket instance and then listening for incoming data results in > > activity A's readLine() method receiving the data. Which makes sense, > > it's still running - but obviously the goal is to have activity B > > receive this data. > > > > An alternative approach I tried was to close down the TCP socket I > > have in activity A when opening up another TCP socket connection when > > I need to use TCP in activity B - although this somewhat works it > > really feels like the wrong way to go about it. > > > > And lastly, one other approach I've thought of is to have one activity > > handling all TCP comms with the .net server and contain all the > > functionality in this one activity by swapping out .xml layout files > > when necessary. Obviously this will result in one massive .java file > > and again is a route which feels wrong. > > > > Any advice on how I can go about designing my app given that I want to > > use TCP functionality in every activity would be greatly appreciated. > > > > Many thanks, > > > > Tonez > > > > -- > > 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 > -- 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