0

アクティビティ 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
です。

4

1 に答える 1