My take on how to implement a Flux like architecture in Android using a ToDo app as an example.
Java
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
.idea
app
gradle/wrapper Initial Code Commit. README and blog post coming shortly. Mar 28, 2015
images
.gitignore
FluxyAndroidTodo.iml
LICENSE
README.md
build.gradle
gradle.properties
gradlew Initial Code Commit. README and blog post coming shortly. Mar 28, 2015
gradlew.bat
settings.gradle

README.md

FluxyTodo

FluxyTodo is an Android application that serves to demonstrate a few different things.

  • It is an example of how to use Dagger 2 and Butterknife for DI (dependency injection) in and how to use Otto to decouple Android applications.
  • It also serves as a proof of concept for a new Android application architecture I came up with.
  • It promotes dependency injection, TDD (test driven development), and a unidirectional data-flow, which makes the separation of view and business logic simple and clear.

More information about what, why, and how, can be found in my accompanying blog post.

Running

If you would like to get this project up and running so you can mess around with it, just follow these simple steps.

  • Fork
  • Clone
  • Import project into Android Studio
  • Run app

Testing

If you would like to run the tests included in this project

  • Find the src/test/java/com/armueller/fluxytodo directory
  • Right click on the package (inside Android Studio)
  • Select "Run 'Tests in com.armueller.fluxytodo'"

Future work

Despite the fact that this app is completely self contained (similar to how the todo app works from Facebook's Flux), I am pretty satisfied with out it turned out. I came up with a couple different ideas on how server communication might be incorporated into this architecture, but I wasn't really happy with any of them. Obviously, to be complete, server communication must fit into the equation somewhere, so that's what I'll be working on next. Once I come up with a solution that im satisfied with, I will update this repo and my blog post to reflect what I came up with.

Todo:

  • Figure out how to incorporate server communication into architecture
  • Set up db at firebase for todos
  • Make app sync data to firebase
  • Revise blog to incorporate server communication into architecture
  • Update repo