Use a Custom Profile and then create two characteristics, one for the app to send commands and other for the peripheral to send data. The first characteristic will have Write Property and other characteristic can be Read or Notify.
So when the App sends the commands, the peripheral will prepare the data accordingly and then notify the app when the data is ready. The app should then process the data. I would suggest doing it this way.
You could also make the app to just keep reading intead of waiting for the notify, but will consume more power.
Make use of AsyncTasks in Android SDK to send commands and process the data in the background instead of running it in the main thread.
Is there any code example is available to refer?