2

データベースにリマインダーのコレクションがあります(時間順)。アプリケーションが起動したら、 を呼び出しますsetAlarmonReceiveこれらのタスクを実行するには、メソッドにコードを追加する必要があります。

  1. データベースから最初のリマインダーを取得する
  2. リマインダーに関連付けられた遅延を取得します
  3. 次のリマインダーを取得するために新しいアラームをスケジュールします。

簡単な BroadcastReceiver クラスを作成しました。

public class AlarmReceiver extends BroadcastReceiver{
    private static final String DEBUG_TAG= "AlarmReceiver";

    public void onReceive(Context arg0, Intent arg1) {
        // TODO Auto-generated method stub
        Log.d(DEBUG_TAG,"ALARM!!!");
            // --mycode--
    }
}

および Activity クラス:

public class AlarmActivity extends Activity {

    private Context context;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_layout);
        context = getApplicationContext();
    }


    public void setAlarm(View v){
        Intent intent = new Intent(this,AlarmReceiver.class);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
        AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
        alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()+ Delay,pendingIntent);
        Log.i("SETTER","Alarm started");

    }

    public void stopAlarm(View v){
        Intent intent = new Intent(this,AlarmReceiver.class);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
        pendingIntent.cancel();
    }
}

ここで、--mycode--セクションで新しい遅延がデータベースから取得され (存在する場合)、この新しい遅延で新しいアラームが設定されるようにします。onReceive メソッドから新しい AlarmManager を設定するにはどうすればよいですか?

4

1 に答える 1

3

AlarmManagerコンテキストからアクセスすることで、ブロードキャストレシーバーに入ることができます

AlarmManager alarmManager = (AlarmManager)arg0.getSystemService(Context.ALARM_SERVICE);

コンテキスト変数はどこarg0ですか

于 2013-03-11T17:11:02.553 に答える