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

Modern Android - How to ditch Activities & Frag...

Avatar for Fabien Devos Fabien Devos
December 13, 2016

Modern Android - How to ditch Activities & Fragments

Activities get destroyed when you rotate the screen and have a complex lifecycle. Using Fragments is error-prone and their lifecycle is even worse.

How would you like a screen that doesn't get destroyed on rotation, and a navigation as simple as calling goTo(screen)? That's what modern Android development should look like.

Avatar for Fabien Devos

Fabien Devos

December 13, 2016

Other Decks in Programming

Transcript

  1. navigator.rewriteHistory(new HistoryRewriter() { @Override public void rewriteHistory(Deque<Screen> history) { if

    (!authenticator.isUserLoggedIn()) { history.clear(); history.push(loginScreen); } else { history.push(homeScreen); } } } );
  2. navigator.rewriteHistory(new HistoryRewriter() { @Override public void rewriteHistory(Deque<Screen> history) { if

    (!authenticator.isUserLoggedIn()) { history.clear(); history.push(loginScreen); } else { history.push(homeScreen); } } } );
  3. public class MySimpleScreen extends Screen<MySimpleView> { @Override protected MySimpleView createView(Context

    context) { return new MySimpleView(context); } @Override public String getTitle(Context context) { return context.getString(R.string.my_screen_title); } @Override protected void onViewCreated() { getView().displayStuff(stuff); } }
  4. public class MySimpleScreen extends Screen<MySimpleView> { @Override protected MySimpleView createView(Context

    context) { return new MySimpleView(context); } @Override public String getTitle(Context context) { return context.getString(R.string.my_screen_title); } @Override protected void onViewCreated() { getView().displayStuff(stuff); } }
  5. public class MySimpleScreen extends Screen<MySimpleView> { @Override protected MySimpleView createView(Context

    context) { return new MySimpleView(context); } @Override public String getTitle(Context context) { return context.getString(R.string.my_screen_title); } @Override protected void onViewCreated() { getView().displayStuff(stuff); } }
  6. public class MySimpleScreen extends Screen<MySimpleView> { @Override protected MySimpleView createView(Context

    context) { return new MySimpleView(context); } @Override public String getTitle(Context context) { return context.getString(R.string.my_screen_title); } @Override protected void onViewCreated() { getView().displayStuff(stuff); } }
  7. public class MySimpleScreen extends Screen<MySimpleView> { @Override protected MySimpleView createView(Context

    context) { return new MySimpleView(context); } @Override public String getTitle(Context context) { return context.getString(R.string.my_screen_title); } @Override protected void onViewCreated() { getView().displayStuff(stuff); } }
  8. public class MySimpleScreen extends Screen<MySimpleView> { @Override protected void onResume(Context

    context) { } @Override public String onPause(Context context) { } ... }