QA@IT
«質問へ戻る

別の所にも質問を書いた旨、追記しました。

0
本文
 
 以上、よろしくお願いいたします。
 
-```ruby
+```C#
             //GET TIME IN SECONDS AND INITIALIZE INTENT
             int time = Convert.ToInt32(timeTxt.Text);
             Intent i = new Intent(this, typeof(MyReceiver));
             alarmManager.SetRepeating(AlarmType.RtcWakeup, JavaSystem.CurrentTimeMillis() + (time * 1000), 10 * 60 * 1000 ,pi);
 ```
 
-```ruby
+```C#
     [BroadcastReceiver]
     public class MyReceiver : BroadcastReceiver
     {
         }
     }
 ```
+
+【2018/05/01追記】
+https://teratail.com/questions/124256
+とのマルチとなります。

Android AlarmManagerの処理の持続時間

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
とのマルチとなります。

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

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

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

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

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

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

```C#
            //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);
```

```C#
    [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
とのマルチとなります。

質問を投稿

Android AlarmManagerの処理の持続時間

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

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

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

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

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

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

```ruby
            //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);
```

```ruby
    [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);
            }
        }
    }
```