0

私のアプリケーションでは、サービスを実行する必要があります。この前提の下で、サービスをフォアグラウンド サービスとして設定します。私の問題は、たとえば 24 時間後、またはサービスを長期間使用しなかった後、サービスが反応しないことです。実行中のサービスでサービスを確認できますが、サービスのブロードキャスト レシーバーが機能せず、スケジュールされたタイマー タスクが呼び出されません。

この動作の理由と考えられるアイデアに感謝します。ありがとうございました。

4

2 に答える 2

0

アラーム 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;
    }
于 2013-01-26T11:15:17.730 に答える
0

調査の結果、おそらくサービスのサイズであるという結論に達しました。サービスが 16 Mb に成長し、サービス停止が反応しました。

于 2013-02-26T17:20:36.553 に答える