@devemux86: Yes, the flag was already set. I also managed to manually increase the maxHeapSize for my particular app. Turned out the memory limit set per Android app is not actually the issue now as the app still has plenty allocated memory available.
The real issue is how to make LM work at requesting time. Below is the excerpt of debug info in GHResponse:
visited_nodes.average: 657158, visited_nodes.sum: 657158.0, Info: idLookup:0.103175424s; tmode:NODE_BASED; , algoInit:0.017103592s, astarbi|beeline-routing:2.6804726s, extract time:0.020075658;, algoInit:0.017103592s, astarbi|beeline-routing:2.6804726s, extract time:0.020075658, simplify (5915->4670)
It is clear now that LM is not enabled properly after loading. I tried to load the graph without programmatically setting anything as Peter suggested, and I got the following error:
java.lang.IllegalStateException: Configured graph.ch.weightings: [fastest|car] is not equal to loaded 
and below is my properties file inside the generated storage:
I think the issue might be around programatically enabling LM, persisting configuration properties and loading those properties. I didn't see graph.lm.weightings or something similar in the file.
For your reference, I copied again the setting I made when importing OSM to enable LM:
I also tried to change bytesForEdgeFlags to 4 (not sure if this is relevant) but the result was still the same.
Btw, what do you mean by "disabling per request is sufficient"? Do I need to pass any parameter to GHRequest?