サービスがあります。アプリケーションを起動するたび、またはデバイスを再起動するたびに起動されますが、最近はサービスが複数回同時に実行できることに気付きました。と呼ばれる、それはちょうど積み重なり、最終的には電池の消耗は非常識になります。開始済みのサービスが既に実行されているかどうかを確認
サービスが既に実行されているかどうかを確認する方法は誰にも分かりますか?ここで
は、サービスを開始するためのコードです:関数内の他のすべてのコードが実行された後に呼び出さのOnCreate機能でMainActivityクラスの
intent = new Intent(Application.Context, typeof(NotificationService));
Application.Context.StartService(intent);
その、。
private void UpdateNotification()
{
Task.Delay(updateTimer).ContinueWith(t =>
{
...
UpdateNotification();
}, TaskScheduler.FromCurrentSynchronizationContext());
}
私がそこにいるので、サービスのインスタンスを1つだけ持つようにしたい:
[Service (Label = "ITMNotificationService")]
class NotificationService : Service
{
...
public override StartCommandResult OnStartCommand(Intent intent, StartCommandFlags flags, int startId)
{
base.OnStartCommand(intent, flags, startId);
...
UpdateNotification();
return StartCommandResult.Sticky;
}
public override IBinder OnBind(Intent intent)
{
// This is a started service, not a bound service, so we just return null.
return null;
}
}
インサイドiは、すべてのX時間を実行してしまったタスクで次のように
サービスクラスがあります複数のものを持っていて、電池をちょうどぶつける理由はありません。
私がここに追加したサービスに関連するものはすべて、何かが不足している場合はお知らせください。
を探していたいくつかの空想のAndroidベースのコードを見つけようとしてよりも簡単であることが判明し
積み重ねられているタスクですか?私は、1秒に1回ではなく、統計の更新を5回以上(開始時刻と時刻に応じて)更新しています。 – Nevaran
onStartCommandのコードは、タスクが既に実行されているときに呼び出されるように処理する必要があります。 – elmorabea
これを行うにはどのようなアイデアですか?私はアンドロイド開発に非常に新しい - 1ヶ月未満です。 – Nevaran