Introduction
When we develop an app, we should bear in mind those situations when the app won't be connected to the internet. The user might be in an elevator or there might not be any network coverage when they try to use the app. To provide a great user experience, we need to ensure that some parts our app work even when there isn't any network connection. To be able to do this, we need a persistent storage mechanism in our app. It can be achieved by either using shared preferences or using the database. Shared preferences can come in handy when we have small amounts of data such as the app's setting values. Databases are much more powerful for situations when we need to store structured data. In this chapter, we will learn how to use Android's built-in database SQLite and will also learn about dependency injection with Dagger2, which is considered among the best practices for developing a quality app.