For each lesson, I typically present a short introduction but then get students building something within a few minutes. Students step through a tutorial, using step-by-step text or video, to build the app. Some students follow the instructions quite mechanically, at least in the early tutorials, but I encourage them to really think about what they are doing and try things not in the instructions. I also encourage them to install the app they've built onto their device and try it.
After the students complete each tutorial, I assign a set of conceptual questions about it and break students into discussion groups of two or three. They discuss the questions and jot down informal answers as I walk around eavesdropping and discussing concepts with them. After a few minutes, I lead a class discussion in which the correct answers are given.
The peer discussions get students talking and asking questions, improving the class discussions immeasurably. The goal is to familiarize students with programming terminology and concepts, and lead them to generalizing their knowledge after they've completed a specific and sometimes mechanical task.
After each tutorial and discussion session, I assign customization tasks in which students add or change features in the app they just built. Detailed instructions are not given in this phase so students are required to explore App Inventor, programming and problem solving. The customization tasks are great for teaching specific programming concepts you want the students to learn.
After two or three iterations of the Build-Conceptualize-Customize process, and the completion of two or three tutorials, I assign a creative project. The project is still somewhat directed, so that students can put what they have just learned into practice, but the students are given freedom to build something of personal interest to them. These creative projects are highly motivating for all students, and the key to engaging those less-motivated students sitting in the back of the class.