更新された動作例:
これは、曜日と時刻を設定し、アラームします。その後、3分ごとに繰り返します。
MainActivity:
public class MainActivity extends AppCompatActivity {
private AlarmManager alarmManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, 17);
calendar.set(Calendar.MINUTE, 03);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
calendar.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY);
Intent dailyIntent = new Intent(this, AlarmActivity.class);
PendingIntent mondayIntent = PendingIntent.getActivity(this, 1000, dailyIntent, 0);
alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
if (Build.VERSION.SDK_INT >= 19) {
alarmManager.setExact(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), mondayIntent);
} else {
System.out.println("------------------------");
}
}
}
AlarmActivity:
public class AlarmActivity extends Activity {
private AlarmManager alarmManager;
Intent intent;
PendingIntent pendingIntent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.alarm_activity);
alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
intent = new Intent(this, AlarmActivity.class);
pendingIntent = PendingIntent.getActivity(this, 1000, intent, 0);
alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP,
SystemClock.elapsedRealtime() +
60 * 1000 * 3, pendingIntent);
}
}
・ホープ、このことができます。
編集: はまた、システムの再起動やパッケージ(あなたのアプリ)のアップデートであなたのアラームを設定することを忘れないでください。
しかし、アプリやサービスがロリポップから始まると自動的にサービスを再開するのは簡単ではないと思います。 –
はい、簡単ではないし、実装したい機能も一種のものです。したがって、ソリューションを正確に実装したい場合は、難しい方法を選択する必要があります。 サービスをブロードキャストしてブロードキャストレシーバで再起動する必要があります。 –