fragnums
pyricau
539
Visit GitHub RepoFragments

Fragnums

An enum based library to replace fragments, because #perfmatters.

“Frag your app complexity today!” - Zach K.

We all know that Fragments suck, and that #enumsmatter. What if we could replace Fragments with Enums?

What's Fragnums?

Fragnums is the smallest, simplest and most performant Android backstack library:

  • No reflection, unlike Fragments which are recreated through reflection.
  • Each enum value is both a screen and a presenter. This means only one instance of each value is created, ever. No useless garbage collection!
  • Synchronous transitions coz ain't nobody got time for Async Fragment Transactions.
  • Handles configuration changes, for all the landscape nut lovers out there.

Show me the code

Creating a new screen is as simple as adding an enum value:

  MY_SCREEN(R.layout.my_screen_layout, R.string.my_screen_title) {
    @Override protected void onBind() {
      View button = findViewById(R.id.button);
      button.setOnClickListener(new View.OnClickListener() {
        @Override public void onClick(View view) {
          // Do something.
        }
      });
    }
  },

Then you can just do goTo(MY_SCREEN).

Getting started

  • Copy the three classes from the example.
  • You're good to go! You can now focus on writing new screens and features, just by adding new enum values.

Why should I use Fragnums?

  • Ultra small footprint: no dependency. In fact, it's not even a library, just three classes to copy.
  • It's really hard to test, so test zealots can't force you to write tests. You can therefore focus on writing more features.
  • All your business logic is in one place, so it's really easy to have a 30,000 feet picture of your code. We suggest you start using a smaller font size in your IDE.

How does it work?

Is this serious?

No. The core principles are good, but this is a satire library. Read the code and see for yourself.

More details

  • The suggestion that we should stop using enums because #perfmatters is a fallacy. An enum is essentially a class. Every new class makes our binary a bit bigger and our runtime a bit slower. Should we stop using classes? Or should we instead focus on the perf problems that actually matter?
  • This library shows how to implement a very basic backstack. You don't need enums for that, you could have a Screen class instead.
  • It's cool to know that one could make an enum centric app. However just because you can, doesn't mean you should.
  • If you're into trolling at conferences, you can get the #enumsmatter T-Shirt here. I am not affiliated with this T-Shirt campaign.

screenshot1.png

screenshot2.png

screenshot3.png

Become a better Android Developer
Millions of developers are learning at MindOrks

Online Training Program

Featured Blogs

Our Team

MindOrks is Certainly one of the best online blog to stay on top of all the Android development news, coding and design patterns. Finally a blog I can count on to keep myself updated with latest and greatest things happening in Android world.

Vipul Shah
Android Developer
Microsoft

Become Pro in Android by watching videos

OUR LEARNERS WORK AT