I use 2 apps in conjunction with each other; OruxMaps and Brouter[/url].
It’s a bit tricky to set up, but it’s worth it as you get decent off-line routing designed for bikes.
Brouter isn’t mapping software on its own, but rather a routing provider (which OruxMaps can use). Have a play on the web interface[/url] to see what you make of the routing algorithm. If you like it then download the app.
Orux is pretty powerful but has a steep learning curve. It can have completely off-line map rendering, including reading Garmin map image files. That, combined with Brouter, means you can use it as a satnav where you don’t have mobile internet, such as the middle of nowhere or other countries.
A Google search will tell you how to get these things running, should you have difficulty.
Of course, you don’t need Brouter. Orux will also deal with GPX files.