1
    GregorianCalendar cal = new GregorianCalendar();
    cal.set(GregorianCalendar.HOUR_OF_DAY, 10);
    cal.set(GregorianCalendar.MINUTE, 12);
    cal.set(GregorianCalendar.SECOND, 0);
    cal.set(GregorianCalendar.MILLISECOND, 0);
    if(cal.before(new GregorianCalendar())){
        cal.add(GregorianCalendar.DAY_OF_MONTH, 1);
    }       

    myalarm = (AlarmManager)getSystemService(ALARM_SERVICE);

    Intent mainIntent = new Intent(this, myReceiver.class);         
    pIntent = PendingIntent.getBroadcast(this, 0, mainIntent, 0);

    myalarm.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), 1000*60*60*24, pIntent);

これは、アラームを設定するためのコードです。myReceiver は拡張された BroadcastReceiver であり、通知を開始するサービスを開始します... 毎日 (アラーム設定からわかるように)。

私は怒っています:

1) アプリケーションを起動し、アラームが期限切れになったときに、最近のアプリのリストからアプリをスワイプすると、何もおかしなことは起こりません。エミュレータ プロセス リストの [デバイス] タブの DDMS パネルで、アプリが消えます。<----それは私が常に起こるべきことを除いてです。

しかし....

2) アプリケーションを起動し、アラームがまだ期限切れになっていない場合、通知はまだ送信されておらず、アラームが鳴り通知を受け取るまで待ちます。

それから....

6 ~ 30 秒後に最近のアプリ リストからアプリをスワイプすると、通知が再び表示され、エミュレータ プロセス リストの [デバイス] タブの DDMS パネルにアプリが再び表示されます。それをタップすると、アプリのメイン アクティビティが開始されます。

この動作を永久に再現できます...

3) 通知をタップせずにスワイプします。この時点で、これ以上通知は送信されませんが、エミュレータ プロセス リストの [デバイス] タブの [DDMS] パネルには、通知をスワイプしてもアプリが強制終了されないため、アプリはまだ存在しますが、最近のアプリ リストでは、私のアプリケーションは表示されません。もう存在しません。

どうして????どうしたの?

追加情報: Log で遊ぶ 最近のアプリ リストにアプリケーションが存在しなくなった場合でも、BroadcastReceiver クラスの onReceive メソッドが呼び出されることがわかりました。

4

0 に答える 0