> It's unclear from your description just where you're storing your non-
> static variables. The right way would appear to be in your
> ServerConnection instance, since that's the static singleton. Your
> activity will have a much shorter lifespan.

The variables are stored as class members in the server connection
class, which is the static singleton. The singleon works fine, I
checked that. The private ctor is only called once, if the
getInstance() function is called for the first time. If a call
setProperty(x); the x value is transported properly to the server
connection class and applied to the member variable. Checked that too,
after calling the method the member variable has the desired value. If
afterwards connect() is called which uses the member variable, the
member has got its initial value again, like it is a different object.
However, only one server connection object exists for the application
(ctor is definitely called only once):

> There's a fair bit more that's unclear to me from your description as
> well. It may be that you need to create and bind a service
> (android.app.Service). I'm not sure you're using "ServerConnection",
> and "server connection" in the sense of a connection to an
> android.app.Service, or to a service on some other system accessed via
> your socket connection.

The service is needed to keep the application up and running since
there is additional hardware used for device input (Anoto Pen). It is
quite complex, but however the service is needed to react on any
action of the pen also if the application is not in foreground. The
server connection is needed to send input data to the server (using
sockets), however, the server connection is not the service. In a
previous version (before the server connection became a singleton) the
background service owned a server connection object. Both work well,
the server connection connects to the external server, sends data and
receives data and the background service runs to keep track of the
anoto pen. Additionally the service receives status messages from the
server class (e.g. socket error, login error, data lost, ...). This
all works well. The only thing that does not work is that if I set the
port or IP from the background service or my activity, the data gets
lost although the debugger tells me that it is in the variable after
calling the setter.

> I'm not sure why you had trouble passing data from your activity to
> your service. If it was an android.app.Service, look at aidl.
>
> Without an android.app.Service, your entire application could be going
> away in between times, if it's not in the foreground. Be sure you
> understand the application and activity lifecycle. Your choice of
> whether to use an android.app.Service should be based on how the
> application lifecycle matches up with when you need this connection to
> exist and what you're doing with it.

Life cycle is clear and correctly implemented (works on other
platforms like Qt, Symbian and J2ME). Service is needed because of
background communication with external hardware that is connected via
bluetooth. Has actually nothing to do with the server connection. Its
only purpose regarding the server connection is to re-login if the
connection is lost.

> If you need it to persist solely to avoid authentication, consider
> getting a time-limited authentication token back instead, and
> persisting that. This would allow your activity, service, connection,
> and entire application to go away, and be restarted, and the user
> would still avoid re-authenticating. You can refresh the token with a
> new time-limited token on each reconnect or access, so timeout will
> only happen if the user is idle for an extended period. This can give
> a more robust user experience.

I would prefer that solution, however the server is developed and
provided by Vodafone since this is a bigger university related
project. So I have to work with their protocol although I would love
to change some things.

> I hope this helps, somehow. I know it's hard to do when you're lost,
> but if you can better describe your circumstance, you can get more
> useful answers. (Sometimes, doing so even leads you to your own
> answer!)

Thank you very much for the detailed explanations, however I am still
trapped. Never had such a problem before.

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

Reply via email to