oh no such a silly mistake , finish() it self calls onDestroy() again so I had to simple change my code to :
private void exitPlayer() {
if(PlayerService.mp.isPlaying())
PlayerService.mp.stop();
finish();
}
protected void onDestroy() {
super.onDestroy();
if (!PlayerService.mp.isPlaying()) {
stopService(playerService);
cancelNotification();
}
}