新人送分 android java代码结构有关问题

新人送分 android java代码结构问题。
public void onStart(Intent intent, int startId) {
// TODO Auto-generated method stub
super.onStart(intent, startId);
mp.start(); 
// 音乐播放完毕的事件处理
  mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {

   public void onCompletion(MediaPlayer mp) {
    // TODO Auto-generated method stub
    // 循环播放
    try {
     mp.start();
    } catch (IllegalStateException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
   }
  });

}
以上是一个Service的onStart方法。

音乐播放完毕的监听 这段代码,这种结构看不太懂啊。而且后面又跟了一个代码块。
1.()里面new 了一个OnCompletionListener方法吗?肯定不对啊~~
2.代码块里的onCompletion是属于重写吗?onCompletion是属于哪里的呢?

请详解  谢谢

------解决方案--------------------
new MediaPlayer.OnCompletionListener()
是一个MediaPlayer的接口,在每次MediaPlayer播放的音频结束时调用
onCompletion()方法,onCompletion()方法属于OnCompletionListener()
接口的方法,
也就是当你播放一首歌结束时该方法会被调用
至于你说的里面new 了一个OnCompletionListener方法吗?肯定不对啊~~
那是匿名内部类,Java很多地方用到这个
可以看看http://blog.csdn.net/wangdong20/article/details/8577273