Android - 定期广播活动

时间:2012-01-30 13:33:46

标签: android

如何在用户安装我的应用程序后定期广播事件。

我已经实现了一个广播接收器,它将触发onReceive任务。现在我需要定期广播此事件,以便定期执行任务。

我知道我需要使用AlarmManager。 代码有点像这样。

Intent intent = new Intent(this, MyBroadcastReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(
        this.getApplicationContext(), 234324243, intent, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC, 0, 5*1000, pendingIntent);

Q1)如果我没有任何活动,我在哪里放置此代码?我是否将此作为服务实现?

Q2)在这样一个“自创活动”中,我的清单的意图过滤器应该是什么?

PS:实际上我的当前广播接收器正在等待连接改变事件。任务是定期尝试/尝试访问互联网。但我不能仅仅依靠连接变化来触发这项任务。这就是为什么我需要一个计时器来触发此事件或触发onReceive()中的方法。 我知道在这种情况下我的意图过滤器将是“android.net.conn.CONNECTIVITY_CHANGE”

1 个答案:

答案 0 :(得分:0)

  

Q1)如果我没有任何活动,我在哪里放置此代码?

您需要实施一项活动。在用户启动您的活动之前,您的任何应用程序都不会在Android 3.1+上运行。

所以,你运行这段代码:

  • 用户首次运行您的活动

  • 重启(通过BOOT_COMPLETED BroadcastReceiver

  • 将来当用户运行您的活动时,如果您确定没有广播已经过去很长时间,因为用户强制停止您的应用

另外,摆脱getApplicationContext(),因为你不应该在这里需要它。

  

Q2)在这样一个“自创活动”中,我的清单的意图过滤器应该是什么?

您不需要一个,因为您的Intent标识了该组件。