Android : Several activities sharing common code
I have an Android application composed by several Activities. Most of them need to check whether an active network is available or not:
public boolean isNetworkAvailable() {
Connectivity开发者_如何学CManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
...
}
I would like to move that code to a helper class in order to avoid the need to write that code in every Activity, but calls to getSystemService
are only allowed from an Activity.
The other alternative is to move that code to a parent activity use inheritance but:
- Every activity already extends from android.app.Activity
- Some of my activities already extend from a common my.package.BaseActivity (Activity <- BaseActivity <- XXXActivity)
so I don't like this idea very much.
What do you recommend in this case? Is there any other alternative?
Well, you could still create a helper class and pass a reference of the activity to it.
public boolean isNetworkAvailable(Context c) {
ConnectivityManager cm = (ConnectivityManager) c.getSystemService(Context.CONNECTIVITY_SERVICE);
TelephonyManager tm = (TelephonyManager) c.getSystemService(Context.TELEPHONY_SERVICE);
...
}
getSystemService is a public method, so it should work outside of the Activity scope.
You could pass it by calling it like this:
helperClassObj.isNetworkAvailable(YourActivity.this);
Hope this works for you.
Can't you just use composition? Define a class with your logic and then put that class or an instance of it into the classes that need the method.
精彩评论