v1.3.0-alpha
Breaking changes:
This release introduces some breaking changes. All stuff listed below is also mentioned in the Migration guide.
- Unified methods for getting context in Routings.
Enhancements
Introduced:
- AutoInject (Ai) Views that allow you to skip overriding the
onCreate(...)
/onViewCreated(..)
method. Instead, in plain Ai Views you have to provide the layout id by overriding agetLayoutId()
method and
to perform any view injections, getting references to views etc. by overriding ainjectViews()
method. In addition, it contains the pre-baked classes, where these methods are already implemented inside of base classes for:- Butterknife,
- DataBinding,
- for Kotlin Android Extensions you have to use regular Ai Views.
- Passive Views (based on AutoInject ones) that enforces developer to create passive views, that are not aware of existence of Presenter. All communication from View to Presenter has to be done through providing Observables with given UI events. It's enforced by the fact that
getPresenter()
method of this kind of views does not return Presenter of some exact type, but as a generalViperPresenter
, so calling any meaningful methods on it is impossible. As in the previous point, it also contains the pre baked classes for:- Butterknife,
- DataBinding,
- for Kotlin Android Extensions you have to use regular AiPassive Views.
MoviperPresentersDispatcher
tool that allows you to choose the View's (especially Activity) presenter on the runtime without a need of putting it to theBundle
with all it's limitations.ViperPresentersList
that allows you to easily attach multiple presenters to the Passive Views.Service
based VIPERs to allow you to maintain a uniform architecture between your app's views and services. It includes support for:- regular
Service
's IntentService
's
- regular
- independent VIPERS to allow you to maintain a uniform architecture between your app's views and complex task objects that aren't strictly connected with any specific Android component.
- a
moviper-test
module that contains useful testing tools:FragmentTestRule
to perform Fragment instrumentation tests in isolation,MoviperActivityTestRule
to perform Viper Activity instrumentation tests with proper cleanup,ViewHolderTestRule
to perform Recyclerview's ViewHolder instrumentation tests in isolation,RxAndroidSchedulersOverrideRule
to overrideAndroidSchedulers.mainThread()
behaviour in unit tests,ViewHolderUnitTestAcrivity
to perform Recyclerview's ViewHolder Robolectric unit tests in isolation,RecyclerViewMatcher
to match RecyclerView's contents in Espresso instrumentation tests.
And added some more Javadocs
General
- Introduced even more samples for new features:
- sample-super-rx-ai-kotlin
- sample-independent-viper
- sample-ipc-ai
- sample-rx-ai
- sample-service
- sample-super-rx-ai
- sample-super-rx-ai-kotlin
- sample-super-rx-databinding
Internal
- Increase tests coverage, also for non-TDD libs that we base onto.
- Bumped dependencies versions:
- RxJava to 1.2.6
Credits
Once again, many thanks to guys that helped me in Moviper development implementing my ideas under my guidance:
- Tomasz Najda - extracting moviper-test module, implementing Viper services and independent Vipers and samples for the latter,
- Bartosz Wilk - Moviper templates, some Ai Views, improving test coverage, implementing
MoviperPresetnersDispatcher
, super-rx-ai sample, - Jakub Jodelka - Viper service sample.