Mark Eschbach

Software Developer && System Analyst


Development notes

These are notes which I will eventually form into full articles. If you are interested in more details, please e-mail me and I'll see if I can update it.

  • Gradle Build System - Techniques and information on using the Gradle Build System with the Android plugin
  • Styling - Lessons I've learned while dealing with Android styles.
  • Application names based on the build profile

    Under the Gradle build structure the file app/src/main/res/values/strings.xml generally contains the applicatino name as specified in app/src/main/AndroidManifest.xml in the attribute /manifest/application/@android:label. You can utilize the bulid profiles with Gradle, placing a new string with the desired title in app/src/debug/values/strings.xml.

    How to change app name per Gradle build type - An approach to modifying the application name based on build profile.

  • SharedPreferences

    Shared preferences are a simple key-value store, able to store primitive types within the Android system. This is designed to store simple user preferences for the application.

  • Security

    Forver on a search to better secure sensitive information.
    Storing application secrets in Android's credential storage
    Interesting review of how to do so against Android 4.0
  • rxJava && rxAndroid

    Easy SQLite on Android with RxJava
    Uses callables to interface SQLite with rxJava.
    SQLBrite: A Reactive Database Foundation
    SQLBrite is a library for wrapping SQLite databases.
    Why you should use RxJava in Android a short introduction to RxJava
    Interesting short survey of rxAndroid libraries which may be used (2016-01)
    rxJava versus rxAndroid
    rxAndroid provides environment specific bindings, appears to primarily provide a simplem interface to Loopers and Handlers.
    Operational theory: Lifecycle interaction

    This idea isn't well tested, but it's what I've got right now.

    Resume flow

    onResume → on resume event → many eventers (IE: loading entities, network state, etc) → main thread → set view state

    stop flow

    onStop → cancel event → cancels all events

  • Fragments

    onCreateView(LayoutInflater, ViewGroup, Bundle) versus onViewCreated(View, Bundle)
    Current operational opinion: use #onCreateView for just inflating the view, while onViewCreated should wire in the view (IE: with Butterknife)
  • Tasks, Activities, and States

  • Best Practices

    That I have so far...
    • Be explicit about the threads you intend to invoke a method. Use th annotations: @MainThread, @WorkerThread, @UIThread, @BinderThread, etc. Since support library v22.
  • Misc

    Strange take on MVP as applied to Android, I need to compare this with my take on it.