我设置了一个闹钟来触发每个 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。
答案 0 :(得分:2)
考虑使用Service
执行后台任务。