2017-01-15 3 views
1

Ich versuche, eine Schlummertaste zu machen, die gut funktioniert, aber ich brauche die Aktivität zu schließen, wenn Schlummern gedrückt wird. Hier ist, was ich habe:Send Broadcast nach x Sekunden, wenn Aktivität beendet

public void snoozeClicked(View view){ 

    MainActivity.ringtone.stop(); 
    Handler handler = new Handler(); 
    handler.postDelayed(new Runnable() { 
     public void run() { 
      // Actions to do after 10 seconds 
      Intent myIntent = new Intent(AlarmActivity.this, AlarmReceiver.class); 
      sendBroadcast(myIntent); 
      finish(); 
     } 
    }, 10000); 

Dies schließt die Aktivität nach x Sekunden, aber ich brauche es sofort zu tun, während die Absicht selbst auszustrahlen wartet, wenn die Aktivität geschlossen ist. Wie kann ich das machen?

+0

Ich verstehe Ihre Frage nicht ganz. Was müssen Sie sofort tun und was müssen Sie nach 10 Sekunden tun? – Karakuri

+0

Schließen Sie die Aktivität sofort, senden Sie die Sendung in 10 Sekunden –

Antwort

1

Sie sollten einen PendingIntent mit AlarmManager planen. Auf diese Weise können Sie sofort die Aktivität finish() tätigen und sich nicht um den Handler kümmern.

Intent intent = new Intent(this, AlarmReceiver.class); 
PendingIntent pendingIntent = PendingIntent.getBroadtcast(this, 0, 
     intent, PendingIntent.FLAG_CANCEL_CURRENT); 

AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); 
long triggerTime = System.currentTimeMillis() + 10 * DateUtils.SECOND_IN_MILLIS; 
alarmManager.setExact(AlarmManager.RTC_WAKEUP, triggerTime, pendingIntent); 

finish(); 
Verwandte Themen