我有一个警报设置为每n分钟触发一次,它工作正常。但是我发现从广播接收器读取应用程序的 SharedPreferences 会导致一些问题(它读取了这些偏好的旧版本,可能是由于不同的 PID)
我被告知要做我需要做的事情,我应该调用一个 Activity,它解决了 SharedPreferences 问题,但创建了一个新问题。
活动必须以独占方式在后台运行。它本质上是一个心跳,向 Presence 解决方案发送一些信息,让用户保持活跃。
警报接收器:公共类 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) 开发,但如果需要可以更新到 API 8。