アクティビティ A があり、AlarmManager によってアクティビティ A を再度呼び出す必要があります。その後、電話はスリープ状態になり、30分後にアラームマネージャーによって目覚めます。コードは次のとおりです。
public void wakeup(){
Intent i = new Intent(mcontext, activity_form.class);
PendingIntent operation = PendingIntent.getActivity(mcontext, 0, i, Intent.FLAG_ACTIVITY_NEW_TASK);
Calendar cal = Calendar.getInstance();
cal.add(Calendar.MINUTE, 30);
AlarmManager am = (AlarmManager)mcontext.getSystemService(Activity.ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), operation);
}
public void sleep(){
pm = (PowerManager)mcontext.getSystemService(Context.POWER_SERVICE);
pm.goToSleep(SystemClock.uptimeMillis());
}
ただし、アクティビティ A を再度作成したくないので、アクティビティがシングルトンであることを望み、これを Manifest.xml に追加します。
android:launchMode="singleInstance"
or
android:launchMode="singleTask"
30 分後、logcat にウェイクアップ コールが表示されますが、電話が起動しません。android:launchMode を削除すれば問題なく、正常に起動します。ただし、もう一度アクティビティ A を作成します。
A -> アラームを設定 -> スリープ -> 起床 -> A' しかし、私の希望は A -> アラームを設定 -> スリープ -> 起床 -> A
です。