n分ごとにトリガーするようにアラームを設定していますが、正常に動作します。ただし、ブロードキャストレシーバーからアプリケーションのSharedPreferencesを読み取ると、いくつかの問題が発生することがわかりました(おそらく、異なるPIDが原因で、これらの設定の古いバージョンを読み取ります)
必要なことを行うには、SharedPreferencesの問題を解決するアクティビティを呼び出す必要があると言われましたが、新しいアクティビティを作成しました。
アクティビティはバックグラウンドで排他的に実行する必要があります。これは本質的にハートビートであり、一部の情報をプレゼンスソリューションに送信し、ユーザーのプレゼンスを維持します。
アラームレシーバー:パブリッククラスAlarmReceiverはBroadcastReceiverを拡張します{
@Override
public void onReceive(Context context, Intent intent) {
Intent alarmIntent = new Intent(context, AlarmActivity.class);
alarmIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
alarmIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(alarmIntent);
}
}
マニフェストの活動
<activity android:name=".AlarmActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar"/>
アラームアクティビティはHTTP更新のみを送信しますが、super.onCreate行を除くすべてを削除しても、アプリケーションをフォアグラウンドに強制してフォーカスします。ただし、これは、アプリケーション自体がホームボタンを介してのみ「最小化」されている場合にのみ発生します。戻るボタンで閉じると、フォーカスが強制されることはありませんが、ハートビートはバックグラウンドで正常に起動します。
どうすればこれを防ぐことができますか?
APIバージョン7(Android 2.1)用に開発していますが、必要に応じてAPI8に更新できます。