私のアプリケーションでは、サービスを実行する必要があります。この前提の下で、サービスをフォアグラウンド サービスとして設定します。私の問題は、たとえば 24 時間後、またはサービスを長期間使用しなかった後、サービスが反応しないことです。実行中のサービスでサービスを確認できますが、サービスのブロードキャスト レシーバーが機能せず、スケジュールされたタイマー タスクが呼び出されません。
この動作の理由と考えられるアイデアに感謝します。ありがとうございました。
アラーム Mabger を 2 時間ごとに起動し、サービスが実行されているかどうかを確認し、そうでない場合はサービスを開始します
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), GeneralConstants.MAIN_SERVICE_CHECKING_TIME, pendingIntent);
if (!isServiceIsRunning(context)) {
context.startService(new Intent(context, MainServiceAlwaysActive.class));
}
public static boolean isServiceIsRunning(Context context) {
// Activity manager to refer the activity/process running in system
ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
// Loop to search
for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
// Basic matching
if ("com.signals.service".equals(service.service.getClassName())) {
return true;
}
}
return false;
}
調査の結果、おそらくサービスのサイズであるという結論に達しました。サービスが 16 Mb に成長し、サービス停止が反応しました。