从广播接收者呼叫活动,但将其保留在后台

时间:2012-08-10 13:02:07

标签: android android-intent

我设置了一个闹钟来触发每个 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。

1 个答案:

答案 0 :(得分:2)

考虑使用Service执行后台任务。