Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Pasando referencia a la actividad a la clase de utilidad android

Me doy cuenta de que esta pregunta se ha hecho muchas veces, pero todavía no puedo entender completamente este concepto. En mi aplicación, estoy usando una clase de utilidad estática para mantener métodos comunes (como mostrar diálogos de error)

Así es como se ve mi clase estática:

public class GlobalMethods { //To show error messages public static final void showSimpleAlertDialog(final Activity activity, String message, final boolean shouldFinishActivity) { if (!activity.isFinishing()) { AlertDialog.Builder builder = new AlertDialog.Builder(activity, AlertDialog.THEME_HOLO_DARK); builder.setCancelable(true).setMessage("\n" + message + "\n").setNeutralButton(activity.getResources().getString(R.string.label_ok), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub dialog.cancel(); } }).setOnCancelListener(new DialogInterface.OnCancelListener() { @Override public void onCancel(DialogInterface dialog) { // TODO Auto-generated method stub if (shouldFinishActivity) activity.finish(); } }).show(); } } //check for connectivity public static final boolean isOnline(Context context) { NetworkInfo networkInfo = ((ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo(); return (networkInfo != null && networkInfo.isConnectedOrConnecting()); } //for the 'HOME' button on every activity public static final void goToDashboard(Activity activity) { goToActivity(ActivityDashboard.class, activity); } } 

En mi actividad principal, llamo a esta función como esta

 GlobalMethods.showSimpleAlertDialog(this, R.string.error_msg_failed_load, true); 

¿Es esto un buen enfoque? ¿Esto causa fugas de memoria? En caso afirmativo, sírvase orientarme sobre las mejores prácticas sobre el uso de clases de utilidad

One Solution collect form web for “Pasando referencia a la actividad a la clase de utilidad android”

No, es un mal enfoque. Es mejor pasar a WeakReference<Activity> a sus métodos, e implementar métodos como este:

 public static final void showSimpleAlertDialog(final WeakReference<Activity> mReference, String message, final boolean shouldFinishActivity) { Activity activity = mReference.get(); if (activity != null) { //your code goes here } 

Más información: http://android-developers.blogspot.ae/2009/01/avoiding-memory-leaks.html

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.