Cómo detener AlarmManager cuando comienza la actividad

Soy un novato en Android. Hoy intenté trabajar con AlarmManage para mi aplicación Recordatorio que permite a los usuarios ingresar horas y minutos para mostrar notificaciones y tengo algún problema. 1. El primer problema es cuando aparece la notificación, solo vibra y no tiene sonido aunque configuré el sonido predeterminado para la notificación y configuré permitir sonido para mi teléfono. 2. Cuando cierro la aplicación, si toco en la notificación, se mostrará MainActivity y AlarmManager volverá a funcionar, lo que hará que mi aplicación muestre nuevamente la notificación. Pero si toco la notificación cuando se abre la aplicación, la notificación no se mostrará. así que quiero que mi solicitud solo sea notificada una vez. Cómo puedo hacerlo ?. 3. Aunque configuré la hora para recordar, pero cuando cerré la aplicación, en algún momento mi teléfono aparece una notificación de mi aplicación de recordatorio en un momento que nunca configuré. Como puedo solucionar este problema ?

MyAlarmService

private NotificationManager mManager;

@Override
public IBinder onBind(Intent arg0)
{
    // TODO Auto-generated method stub
    return null;
}

@Override
public void onCreate()
{
    // TODO Auto-generated method stub
    super.onCreate();
}

@SuppressWarnings("static-access")
@Override
public void onStart(Intent intent, int startId)
{
    super.onStart(intent, startId);
   // Toast.makeText(this, "I'm running", Toast.LENGTH_SHORT).show();
    long[] v = {500,1000};
    NotificationCompat.Builder mBuilder =
            new NotificationCompat.Builder(this)
                    .setVibrate(v)
                    .setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION))
                    .setSmallIcon(R.drawable.ic_remind)
                    .setContentTitle("My notification")
        .setContentText("This is a test message!");
    mBuilder.setSound(Settings.System.DEFAULT_NOTIFICATION_URI);
    mBuilder.setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION));
    mBuilder.setAutoCancel(true);
    Intent intent1 = new Intent(this.getApplicationContext(),MainActivity.class);
    intent1.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);

    TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
    stackBuilder.addParentStack(MainActivity.class);
    stackBuilder.addNextIntent(intent1);



    PendingIntent pendingNotificationIntent = PendingIntent.getActivity( this.getApplicationContext(),0, intent1,PendingIntent.FLAG_UPDATE_CURRENT);
    mBuilder.setContentIntent(pendingNotificationIntent);
    mManager =(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

    mManager.notify(0, mBuilder.build());

}

@Override
public void onDestroy()
{
    // TODO Auto-generated method stub
    super.onDestroy();
}

Receptor

public void onReceive(Context context, Intent intent)
{
    Intent service1 = new Intent(context, MyAlarmService.class);
    context.startService(service1);
}

Actividad principal

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    final EditText edt_hours = (EditText)findViewById(R.id.edt_hour);
    final EditText edt_minutes = (EditText)findViewById(R.id.edt_minutes);
    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Calendar calendar = Calendar.getInstance();
            calendar.setTimeInMillis(System.currentTimeMillis());
            calendar.set(Calendar.HOUR_OF_DAY, Integer.parseInt(edt_hours.getText().toString()));
             calendar.set(Calendar.MINUTE, Integer.parseInt(edt_minutes.getText().toString()));
            //calendar.set(Calendar.SECOND,0);

            Intent myIntent = new Intent(MainActivity.this, MyReceiver.class);
            pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 0, myIntent,0);

            alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
            alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);

        }
    });



} //end onCre

p / s: Lo siento mucho si mi pregunta no es clara porque mi inglés no es bueno. Y quiero agradecer a todos los que leyeron esta pregunta.

Respuestas a la pregunta(1)

Su respuesta a la pregunta