alaramマネージャを登録AlarmManagerクラスは がすることを繰り返しアラームのスケジューリングを可能に第二に、これらのalaramを受信する放送受信機を宣言する必要がまず将来の設定点で実行されます。 AlarmManagerはPendingIntentと指定され、アラームがスケジュールされるたびに発生します。アラームが がトリガーされると、登録されたインテントはAndroidシステムによってブロードキャストされ、 ターゲットアプリケーションを起動していない場合は起動します。
BroadcastReceiverから継承するクラスを作成します。 BroadcastReceiverがIntentブロードキャストを受信しているときに呼び出されるonReceiveメソッドでは、タスクを実行するコードを設定します。
AlarmReceiver.java
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;
public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context arg0, Intent arg1) {
// For our recurring task, we'll just display a message
Toast.makeText(arg0, "I'm running", Toast.LENGTH_SHORT).show();
}
}
私たちは、その後、マニフェストファイルにBroadcastReceiverを登録する必要があります。マニフェストファイルでAlarmReceiverを宣言します。
<application>
.
.
<receiver android:name=".AlarmReceiver"></receiver>
.
.
</application>
あなたの呼び出しアクティビティには、以下のインスタンス変数が含まれています。 onCreateで
private PendingIntent pendingIntent;
private AlarmManager manager;
()私たちは放送受信機のクラスを参照し、私たちのPendingIntentでそれを使用する意図を作成します。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Retrieve a PendingIntent that will perform a broadcast
Intent alarmIntent = new Intent(this, AlarmReceiver.class);
pendingIntent = PendingIntent.getBroadcast(this, 0, alarmIntent, 0);
}
次に、定期的なアラームを設定する方法が含まれています。一度設定すると、アラームはX時間ごとに起動します。ここでは、10秒間という例を取っています。これを毎日計算するために単純に計算できます。
public void startAlarm(View view) {
manager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
int interval = 10000;
manager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), interval, pendingIntent);
Toast.makeText(this, "Alarm Set", Toast.LENGTH_SHORT).show();
}
次に、必要に応じてcancelAlarm()メソッドを設定してアラームを停止します。
public void cancelAlarm(View view) {
if (manager != null) {
manager.cancel(pendingIntent);
Toast.makeText(this, "Alarm Canceled", Toast.LENGTH_SHORT).show();
}
}
[this link](http://stackoverflow.com/a/8801990/3800164)の回答は、今後このタスクをスケジュールするのに役立ちます。 –
私の理解では、あなたのアプリが終了する前にタスクが生成されたならば、それは実行されません。アプリが終了している間に、タスクが実行されていた場合、OSによってブロックされる可能性があります。 @jiteshの下の答えは、あなたが探しているものかもしれません。 –