It's a demo project to follow the latest news, search in old news and save the news you want to keep for later readings.
Project is written in Kotlin.๐ฏ
Implementing new technologies and best practices in android development such as:
- MVVM - Its principal advantage is that it caches state and persists it through configuration changes.
- Navigation Components - Navigation component helps you implement navigation, from simple button clicks to more complex patterns, such as app bars and the navigation drawer.
- Architecture Components - It's a new collection of libraries that contains the lifecycle-aware components. It can solve problems with configuration changes, supports data persistence, reduces boilerplate code, helps to prevent memory leaks and simplifies async data loading into your UI.
- Coroutines - In addition to opening the doors to asynchronous programming, coroutines also provide a wealth of other possibilities, such as concurrency and actors.
- Retrofit - A type-safe HTTP client for Android and Java. Retrofit turns your HTTP API into a Java interface.
- Room - The Room persistence library provides an abstraction layer over SQLite to allow fluent database access while harnessing the full power of SQLite.
- LiveData - LiveData is an observable data holder class. Unlike a regular observable, LiveData is lifecycle-aware, meaning it respects the lifecycle of other app components, such as activities, fragments, or services.
- WorkManager - WorkManager is the recommended solution for persistent work. Work is persistent when it remains scheduled through app restarts and system reboots.
- Notifications - A notification is a message that Android displays outside your app's UI to provide the user with reminders, communication from other people, or other timely information from your app.
- Sharing - Common ways you can send and receive simple data (like text, images and files) between applications using the Android Share sheet and Intent Resolver with Intent objects.
- ViewBinding - View binding is a feature that allows you to more easily write code that interacts with views. Once view binding is enabled in a module, it generates a binding class for each XML layout file present in that module.
- Pagination - Pagination helps you load and display small chunks of data at a time. Loading partial data on demand reduces usage of network bandwidth and system resources.
- Glide - Glide is a fast and efficient open source media management and image loading framework for Android that wraps media decoding, memory and disk caching, and resource pooling into a simple and easy to use interface.
- Just make a pull request.
- Get an API key for your own from "https://newsapi.org/"
- Paste that key to "gradle.properties" with keyword "API_KEY".