Android close running apps
Code-Style: Good
Functionality: no problem seen
Potential Bugs: only one I can see
Android-Expert-Level: I am not an android expert.
Android-Basic-Level: Everything looks sane


Bug (in jest):

People can play 1.9 seconds of angry birds, swap to a different app, and then swap back ;-)

Suggestions:

There is only one improvement I can suggest. 


   private BroadcastReceiver screenReceiver = null;



This line is out-of-place. The only place it is used is in your registerScreenReceiver method. You may as well declare it in that method.

I would be tempted actually to pull the declaration out of the method and make it a final in-initialization anonymous instance:

 private final BroadcastReceiver screenReceiver = new BroadcastReceiver(){
        @Override
        public void onReceive(Context context, Intent intent) {
            if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
                Log.i("ScreenReceiver", "Screen off");
                screenOn = false;
            } else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
                Log.i("ScreenReceiver", "Screen on");
                listenForAppStarts();
                screenOn = true;            
            }
        }
    };