Offline maps (OpenstreetMap only)
I recommend Maperitive to download the maps. Another option is to move the map to cache the map tiles (map pictures).
You can find more information for using offline maps on (a little technical may be): https://github.com/osmdroid/osmdroid/wiki/Offline-Map-Tiles
Note that offline maps are only possible when you use OpenstreetMap.
A short tutorial can be found here: https://mapitgis.com/offline-maps
Map > Set Geometry bounds
Set area you want to download. Note that there are policies on downloading maps (https://operations.osmfoundation.org/policies/tiles/).
Enter in command prompt: [generate-mbtiles minzoom=5 maxzoom=10]
Zoom levels can be adjusted. Be careful when specifying zoom levels. Each zoom level needs about four times as many tiles as the previous one, so you can very quickly reach pretty large numbers of tiles which can take a very long time to generate and require a lot of disk space. (see http://maperitive.net/docs/Commands/GenerateMBTiles.html)
When the tasked is finished copy the .mbtiles file to your phone.
You can find the file on your computer at the following location: [installation folder]\Maperitive\Tiles
Store it on your phone in the following folder: /sdcard/osmdroid/
You are done.
You can have multiple files, so do not download a big region e.g. in once with very high zoom level..
You can also move the map and follow your route on the map at the desired zoom level(s) before you start your ride. Wait till the map tiles (map pictures) are loaded and proceed. This can take a while, but it works. The map files will be cached for 7 till 14 days (or overwritten when downloaded a very big area). This is what I mostly do when I'm on holiday in the mountains with a bad internet connection (as I assume 4G is everywhere...).