You can override the Application class and make your server reference a static public variable which will be available from any Activity using ((YourApplication)getApplication()).yourStaticServerReference
.
To override your Application class, follow the following steps :
Create a class extending Application, let's call it com.yourpackage.YourApplication
package com.yourpackage;
import android.app.Application;
public class YourApplication extends Application {
public static SmartFoxServer smartFoxServer;
@Override
public void onCreate() {
smartFoxServer = initSmartFoxServer(); // I don't know SmartFoxServer's API so let's imagine you implement this somewhere in the Application class.
// Now the smartFoxServer field is like a global variable visible in all your Activities using ((YourApplication)getApplication()).smartFoxServer
}
}
In your application manifest you have to edit the application declaration :
<application android:icon="@drawable/icon" android:label="@string/app_name"
android:name="com.yourpackage.YourApplication">
If you often access the smartFoxServer object, you can even use java 1.5 static import feature :
import static com.yourpackage.YourApplication.smartFoxServer;
public Activity myActivity {
public void anyMethod() {
// Thanks to the static import, smartFoxServer is directly accessible, without calling getActivity().
smartFoxServer.doSomething();
}
}
I wrote this directly here so there might be some things wrong... I will check this in more details when the kids let me more than 2 minutes of free time ;-)