0

私のアプリケーションでは、数分ごとにタスクを実行したいと考えています。このために、経過時間で実行するアラーム マネージャーを追加しました。コードは簡単です:

    AlarmManager mgr = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
    Intent i = new Intent(this, OnAlarmReceiver.class);
    PendingIntent pi = PendingIntent.getBroadcast(this, 0, i, 0);

    mgr.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
            SystemClock.elapsedRealtime() + 1000 /* Initial run in 1 second */,
            OnBootReceiver.REPEAT_PERIOD, /* 10 minutes */
            pi);

もちろん、私は放送受信機を持っています:

public class OnBootReceiver extends BroadcastReceiver {
     //implementation here
}

このコードをアプリケーションのメイン アクティビティとブロードキャスト (OnBootReceiver) で実行して、アプリの起動時と起動のたびにコードが実行されるようにします。

私の問題は、オペレーティング システムが bg アプリケーションを閉じるときです。タスク マネージャに移動して Clear Memory コマンドを実行すると、アプリケーションが閉じられ、アラーム通知が表示されません。

このシナリオで自分のコードでアラーム通知を受け取り続けるにはどうすればよいですか?

4

2 に答える 2

2

タスクマネージャーに移動して[メモリのクリア]コマンドを実行すると、アプリケーションが閉じられ、アラーム通知が表示されません。

「メモリのクリアコマンド」は標準のAndroidには存在しないため、この機能の正確な実装はデバイスの製造元にのみ知られています。

このシナリオでコードのアラーム通知を受信し続けるにはどうすればよいですか?

おそらくあなたはしません。ほとんどの場合、デバイスの製造元は、アラームのスケジュールを解除するなど、[設定]でForceStopが実行する作業の一部を実行しています。この理論は、adb shell dumpsys alarm「メモリのクリアコマンドを実行」の前後に実行して、アラームで何が変化したかを確認することで確認できます。

「メモリのクリアコマンド」がないデバイスでも、ユーザーは設定から​​強制的に停止することができ、アラームは削除されることに注意してください。

于 2012-12-11T18:23:38.777 に答える
0

これを試して:

アクティビティについては、マニフェストxmlに次のように入力します。

android:persistent="true"

編集:

次のリンクを参照してください:https ://groups.google.com/forum/#!topic / android-platform/nU0e3aoBlSYおよび http://developer.android.com/reference/android/app/Service.html#startForeground%28int 、%20android.app.Notification%29

于 2012-12-11T18:25:56.053 に答える