what is android
Android is an open source operating system based on the Linux kernel and developed by Google. It is used in various devices including smartphones, tablets, TVs and smart watches.
Currently, Android is the most used operating system for mobile devices in the world; according to a recent 12-month sample report by statcounter; Android's market share is 71.96%.
Kotlin
Kotlin is a programming language developed by JetBrains. Recommended by Google, which officially announced Kotlin as the Android development language in May 2017. It is a modern programming language that is compatible with Java and can run on JVM which makes its adoption in Android application development very fast.
Whether you are new to Android or not, you should make Kotlin your first choice, don't sail against the current Google announced this approach at Google I/O 2019. With Kotlin, you will have access to all modern language features including the power of coroutines and use modern libraries developed for the Android ecosystem.
Learning materials:
Jetpack Compose
Jetpack Compose is Android's recommended modern toolkit for building native UIs. It simplifies and speeds up UI development on Android.
Jetpack Compose is part of the Android Jetpack library. Easily create native user interfaces using the Kotlin programming language. Additionally, it integrates with other Android Jetpack libraries such as LiveData and ViewModel to make it easier to build responsive and maintainable Android applications.
Some key features include:
- Declarative user interface;
- Customizable widgets;
- Easy to integrate with existing code;
- real-time preview;
- Improved performance.
Learning materials:
- Jetpack Compose Documentation
- Jetpack Compose Roadmap
- Jetpack Compose Course
- Compose to Kotlin Compatibility Mapping
Material Design
Material Design is an adaptable system of guidelines, components and tools. Supports best practices in user interface design. Powered by open source code, Material Design simplifies collaboration between designers and developers and helps teams build beautiful products quickly.
Learning materials:
Clean Arch
It is based on achieving separation of duties by dividing software into layers.
Features :
- independent of the framework
- testable
- independent of the user interface
- independent of database
- independent from any external agency
- Dependency rules
Clean Arch in Android
Learning materials:
Architectural Patterns for Presentation Layer
Architectural patterns are a higher level strategy. Designed to aid in the design of software architectures, it features solutions to common architectural problems within a reusable framework. Architectural patterns are similar to design patterns, but they are larger in scale and solve more global problems. Examples include the overall structure of the system, the relationships between components, and how data is managed.
- MVC
is new to programming. I believe that the first framework you encounter is MVC. Whether you write an Android program intentionally or inadvertently, it is an MVC framework. It is just a variant of the MVC framework (the most confusing one). The Android system itself is built according to MVC.
-
MVP
The full name of MVP: Model-View-Presenter; MVP evolved from the classic pattern MVC, and their basic ideas have similarities: Controller/Presenter is responsible for logic processing, Model provides data, and View is responsible for display.
-
MVVM
MVVM is short for Model-View-ViewModel. It's essentially an improved version of MVC. MVVM is to abstract the state and behavior of the View in it, and let us separate the view UI from the business logic.
In the MVVM mode, a ViewModel matches a View. It does not have the IView interface in MVP, but is completely bound to the View. All changes in the View will be automatically updated to the ViewModel, and any changes in the ViewModel will also be automatically updated. Synchronized to display on View.
In Android, DataBinding helps us realize MVVM, and data binding in XML increases the weight of XML. It is no longer just layout as before, and balances the responsibilities of each part.
-
MVI
MVI is very similar to MVVM. It draws on the idea of the front-end framework and emphasizes the one-way flow of data and the only data source. The architecture diagram is as follows
Whether it is MVC, MVP, MVVM or MVI, the main reason is that the interaction between View and Model is different
- The core of MVI is the one-way flow of data
- MVI uses kotlin flow to easily implement responsive programming
- The entire View of MVI only depends on one State to refresh, and this State is the only trusted data source
Learning materials:
dependency injection
Dependency injection is a software design pattern that allows clients to obtain their dependencies from external sources instead of creating them themselves. It is a technique for implementing Inversion of Control (IoC) between an object and its dependencies.
Learning materials:
Modular
Modularity is a software design technique that allows you to divide an application into independent modules, each with its own functions and responsibilities.
The benefits of modularity:
- reusability
- strict visibility control
- Customizable Delivery
- scalability
- easy to maintain
- easy to test
- Architecture Improvement
- improve collaboration
- build time