0

私はカウントダウン タイマー クラスを使用しており、そのクラスの onfinish() 状態で通知を作成しています。Onfinish メソッドのコードは次のとおりです。

public void onFinish() {
            notificate();
            Log.i("Aler Resume", "Finished");
            remtime.setText("0 : 00 : 00");
            textCondition.setText(getString(R.string.BuddyAlertExpired));
              }

私が書いたnotificate()メソッドで:

private void notificate() {
        NotificationManager notifManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);  

        Notification note = new Notification(R.drawable.ic_launcher, "New E-mail", System.currentTimeMillis());  

         PendingIntent intent = PendingIntent.getActivity(this, 0, new Intent(this, AlertResume.class), 0); 
         note.setLatestEventInfo(this, "Buddy Alert", getString(R.string.BuddyAlertExpired), intent); 
         note.defaults= Notification.DEFAULT_VIBRATE;
         note.defaults=Notification.DEFAULT_SOUND;
         notifManager.notify(NOTIF_ID, note); 


    }

アプリケーションを開いたままにしておくと、正常に動作します。しかし、アプリケーションから戻ると、onfinish メソッドが呼び出され、ログを正しく表示できますが、notofication メソッドが機能せず、通知が表示されません。間違いはありませんか?

4

1 に答える 1

0

アプリから離れると、Android が CountDown タイマーの実行中のプロセスをスパムまたはエクストラと見なし、意図しないものと見なすことがあります。そして終わり..(閉じるのを忘れたと思うように、閉じさせてください)

PendingIntent - 通知を設定するなど、上記のものに AlarmManager を使用することをお勧めします。カウントダウンタイマーを開始するときに、ALARM MANAGER を使用して PENDING INTENT で通知を設定します。

        nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
        Notification notification = new Notification(R.drawable.icon, "Test", System.currentTimeMillis());

        Intent intentTL = new Intent(context, MainActivity.class);
        notification.setLatestEventInfo(context, "Test", "Do something!",
                PendingIntent.getActivity(context, 0, intentTL,
                PendingIntent.FLAG_CANCEL_CURRENT));
        notification.flags = Notification.DEFAULT_LIGHTS | Notification.FLAG_AUTO_CANCEL;
        nm.notify(1, notification);

        AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0,
                intent, PendingIntent.FLAG_CANCEL_CURRENT);
        am.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 10000, pendingIntent);
于 2012-04-10T06:20:54.323 に答える