AndroidStudioでAlarmManagerを使う方法について
自分がコードを書いていた時につまずいた点などを踏まえて紹介します。
※Qiita初投稿です、ちょくちょく変なところや違うところがあるかもしれませんが多めにみてください…
#AlarmManagerの設定の仕方
今回作るのは何分後(秒、時間、etc...)かに処理するというコードを作ります。
まずは、AlarmManagerの設定の仕方を見ていきます。
###重要!
##1: AndroidManifestに設定を加えていきます。
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
<uses-permission android:name="android.permission.WAKE_LOCK" />
<application
<receiver
android:name=".AlarmManagerを受け取るクラス."
android:process=":remote" >
</receiver>
</application>
</manifest>
AndroidManifestにuses-permission android:name="android.permission.WAKE_LOCK"
とreceiver android:name=".AlarmManagerを受け取るクラス" android:process=":remote"
を書くことでAlarmManagerが動きます。
私は、ここを書くの忘れていてめっちゃ苦労しました。公式サイトもAlarmManagerのところになかったので…
##2: AlarmManagerを送るためのIntentを作る
...
AlarmManager alarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context, AlarmManagerを受け取る場所.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
alarmManager.setExact(AlarmManager.RTC_WAKEUP, お好きな時間を「ミリ秒!」で, pendingIntent );
Intentを使って何分後にデータを送るか設定します。
上の3つのコードのcontext
は、だいたいgetApplicationContext()
となっていることが多いです。
最後の行の第2引数はミリ秒となっていることが多いのでミリ秒で書くことをおすすめします。
##3: BroadcastReceiverをextends(継承)したクラスを作成する
// BoardcastReceiverを継承
public class AlarmManagerを受け取る場所 extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// 作りたい処理を書く
}
}
BroadcastReceiver
を継承してあとはonReceiveメゾットを作ってそこに処理を作ったら完成です。
最後まで見ていただきありがとうございます。
最初なので何かとおかしいところがあれば申し訳ありません。
twitterもやっていますのでフォローしていただければ幸いです。
https://twitter.com/tomfumy_dev