If you disable an app, you should also disable billing for that app [1], as the app can still be charged for fixed billing costs, like datastore storage.
While the app is disabled, requests to your app will fail. You may continue to incur charges from other Google Cloud products. For example, if your project has exceeded the free quota for Cloud Storage, you will continue incurring charges for storage.[2]
App Engine does not provide a free tier in the flexible environment as you can read in this document[3], so to not incur charges by default try standar environment because it has a free tier for App Engine resources.
You could try this example[4]. As is stated: There are no costs associated with running this guide. Running this sample app alone does not exceed your free quota. But after finishing it and to avoid incurring charges, you can delete your Cloud project to stop billing for all the resources used within that project as established here [5].
This is a recommended github project [6] that is used to test GAE but use it in standar environment because, as described above, a flexible environment doesn’t have a free tier.
[2]:https://cloud.google.com/appengine/docs/managing-costs#disable_manally
[3]:https://cloud.google.com/appengine/pricing
[4]:https://cloud.google.com/appengine/docs/standard/java-gen2/create-app
[5]:https://cloud.google.com/appengine/docs/standard/java-gen2/create-app#clean-up
[6]:https://cloud.google.com/appengine/docs/standard/java-gen2/create-app#download_the_hello_world_app