So stoppen Sie AlarmManager, wenn die Aktivität beginnt

Ich bin ein Neuling in Android. Heute habe ich versucht, mit AlarmManage für meine Reminder-Anwendung zu arbeiten, mit der Benutzer Stunden und Minuten eingeben können, um Benachrichtigungen anzuzeigen, und ich habe ein Problem damit. 1. Das erste Problem ist, wenn die Benachrichtigung angezeigt wird. Sie vibriert nur und hat keinen Ton. Ich habe jedoch den Standardton für die Benachrichtigung festgelegt und den Ton für mein Telefon zugelassen. 2. Wenn ich die Anwendung schließe und bei einer Benachrichtigung berühre, wird die MainActivity angezeigt und der AlarmManager funktioniert wieder, sodass meine Anwendung erneut eine Benachrichtigung anzeigt. Aber wenn ich bei der Benachrichtigung beim Öffnen der Anwendung berühren, wird die Benachrichtigung nicht angezeigt. also ich möchte meine bewerbung einfach mal benachrichtigen. Wie kann ich es tun ?. 3. Ich habe zwar die Zeit für die Erinnerung festgelegt, aber wenn ich die Anwendung geschlossen habe, wird auf meinem Telefon gelegentlich eine Benachrichtigung über meine Erinnerungsanwendung angezeigt, die ich noch nie festgelegt habe. Wie kann ich dieses Problem beheben?

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();
}

Empfänge

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

Hauptaktivitä

    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: Es tut mir so leid, wenn meine Frage nicht klar ist, weil mein Englisch nicht gut ist. Und ich möchte mich bei allen bedanken, die diese Frage gelesen haben.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage