2017-10-12 10 views
0

アラーム通知があります。どのようにアラームを複数回、各リマインダーでトリガーするには? 1つの目覚まし時計だけが動作し、残りは上書きされます。TaskReminerは1つのアラームのみを処理します

コード:

public class ReminderManager { 

private Context mContext; 
private AlarmManager mAlarmManager; 

public ReminderManager(Context context) { 
    mContext = context; 
    mAlarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE); 
} 

public void setReminder(Long taskId, Calendar when) { 

    if (when.getTimeInMillis() < System.currentTimeMillis()) { 
     return; 
    } 

    Intent i = new Intent(mContext, OnAlarmReceiver.class); 
    i.putExtra(DbAdapter.KEY_ROWID, (long)taskId); 
    PendingIntent pi = PendingIntent.getBroadcast(mContext, 0, i, PendingIntent.FLAG_ONE_SHOT); 
    mAlarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime(), pi); 
} 

} 

ザ・保留中の各意図が提供されるべきである

答えて

0
PendingIntent pi = PendingIntent.getBroadcast(mContext,{unique id}, i, PendingIntent.FLAG_ONE_SHOT); 

..私は問題がrequestCodeであることを理解し、私はそれを解決する方法を理解することはできませんユニークなID。ランダムなIDを作成し、そのIDを一意のIDとして保留中のインテントに割り当てます。それ以外の場合は、保留中の意図は、乱数

Random rand = new Random(); 
int n = rand.nextInt(); 

またはいずれかの場合は、データベースからIDを使用しての作成一意のIDについて

を上書きされます。

+0

私は理解しますが、どうすれば解決できますか? –

+0

ランダムな整数を作成する... –

+0

ランダムrand = newランダム(); int n = rand.nextInt(); –

関連する問題