Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Evolución Android

Evolución Android

El software, como las especies, tiene que evolucionar para no extinguirse. Desarrollar para Android puede ser muy rápido una vez conoces el framework, pero a la larga, los mismos componentes que te permiten ir rápido al principio, pueden suponer el peor obstáculo para hacer crecer una aplicación. En esta charla veremos algunos de estos componentes, cuáles son sus ventajas, cuáles son sus problemas más adelante, y algunas estrategias que podemos seguir para evitar que nuestro proyecto muera.

Rubén Serrano

July 04, 2014
Tweet

More Decks by Rubén Serrano

Other Decks in Programming

Transcript

  1. public class Application extends android.app.Application {
 private static Gson gson;

    private Map<Long, Integer> mRoles; private Session mSession; private File mCacheDir; private NotificationManager mNotificationManager; private int mNumberNotifications; ! public static Session getSession() {
 return instance.mSession;
 }
 public static String getGCMToken() {
 AccountManager am = AccountManager.get(Application.getContext());
 return am.getUserData(Application.getSession().getUser(), AccountAuthenticator.GCM_TOKEN);
 }
 
 public static File getCacheDirectory() {
 return instance.mCacheDir;
 }
  2. private static class ViewHolder {
 public TextView textView;
 public ImageView

    imageView;
 } ! @Override
 public View getView(int position, View convertView, ViewGroup parent) {
 View view = convertView;
 ViewHolder viewHolder;
 if (view == null) {
 view = inflater.inflate(R.layout.item, parent, false);
 viewHolder = new ViewHolder();
 viewHolder.textView = (TextView) view.findViewById(R.id.text);
 viewHolder.imageView = (ImageView) view.findViewById(R.id.image);
 view.setTag(viewHolder);
 }
 viewHolder = (ViewHolder) view.getTag();
 viewHolder.textView.setText("Random string");
 viewHolder.imageView.setBackgroundColor(R.color.black);
 return view;
 } ViewHolder
  3. @Override
 public View getView(int position, View convertView, ViewGroup parent) {


    View view = convertView;
 if (view == null) {
 view = inflater.inflate(R.layout.item, parent, false);
 }
 ((TextView) view.findViewById(R.id.text)).setText(“Random string");
 ((ImageView) view.findViewById(R.id.image)).setBackgroundColor(R.color.black);
 return view;
 } No Holder
  4. Juguemos… • Descargar datos de un servidor • Parser JSON

    • Guardar datos en la BBDD • Recuperar datos de la BBDD • Mostrar datos en la pantalla
  5. • Descargar datos de un servidor • Parser JSON •

    Guardar datos en la BBDD • Recuperar datos de la BBDD • Mostrar datos en la pantalla Juguemos…
  6. “Una Activity para gobernarlos a todos; una Activity para encontrarlos;

    una Activity para atraerlos a todos y atarlos a las tinieblas” - El Señor de los Fragments
  7. LoaderCallbacks<Cursor> callback = new LoaderCallbacks<Cursor>() {
 @Override
 public Loader<Cursor> onCreateLoader(int

    id, Bundle args) {
 return new CursorLoader(context, uri, null, null, null, null);
 }
 
 @Override
 public void onLoadFinished(Loader<Cursor> loader, Cursor data) { adapter.swapCursor(data);
 }
 
 @Override
 public void onLoaderReset(Loader<Cursor> loader) {
 
 }
 }; LoaderCallbacks
  8. It is not the strongest of the species that survives,

    nor the most intelligent, but rather the one most adaptable to change. Charles Darwin
  9. It is not the strongest of the species that survives,

    nor the most intelligent, but rather the one most adaptable to change. Charles Darwin