QA@IT

Android AlarmManagerの処理の持続時間

6138 PV

Android 6.0をターゲットとしたXamarin.Androidの自作アプリで、
マルチタスクボタンからアプリが終了されても
時刻になれば処理を行うアプリを作成したいと考えています。

そこでAlarmManagerの利用を考えているのですが、
AlarmManagerからの処理は1分程度しか動作しないものでしょうか。

下記のソースで試したのですが、BroadcastReceiverに無限ループの処理を
与えておいても1分程度で終わってしまいました。

Android上での電池の最適化では「最適化しないアプリ」に登録しています。

この部分についてどこかのリファレンスに書いてあるようでしたら
教えていただけませんでしょうか。

以上、よろしくお願いいたします。

            //GET TIME IN SECONDS AND INITIALIZE INTENT
            int time = Convert.ToInt32(timeTxt.Text);
            Intent i = new Intent(this, typeof(MyReceiver));

            //PASS CONTEXT,YOUR PRIVATE REQUEST CODE,INTENT OBJECT AND FLAG
            PendingIntent pi = PendingIntent.GetBroadcast(this, 0, i, 0);

            //INITIALIZE ALARM MANAGER
            AlarmManager alarmManager = (AlarmManager)GetSystemService(AlarmService);

            //SET THE ALARM 
            alarmManager.SetRepeating(AlarmType.RtcWakeup, JavaSystem.CurrentTimeMillis() + (time * 1000), 10 * 60 * 1000 ,pi);
    [BroadcastReceiver]
    public class MyReceiver : BroadcastReceiver
    {
        public override void OnReceive(Context context, Intent intent)
        {
            while (true)
            {
                using (StreamWriter sw = File.AppendText(Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), "DateTime.Now.txt")))
                {
                    sw.WriteLine(DateTime.Now.ToString());
                }

                Thread.Sleep(1000);
            }
        }
    }

【2018/05/01追記】
https://teratail.com/questions/124256
とのマルチとなります。

回答

ウォッチ

この質問への回答やコメントをメールでお知らせします。