以下代码onCreate
中有一个Activity
类。当我进入该活动时,我期望每秒输出一次日志,但没有任何反应。
private void setupAlarm() {
AlarmManager alarmManager = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(this,AdhIntent.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this,
0, intent, 0);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 1000, pendingIntent);
}
private class AdhIntent extends BroadcastReceiver {
public AdhIntent() {
System.out.println("2014");
}
@Override
public void onReceive(Context context, Intent intent) {
System.out.println("2014");
}
}
答案 0 :(得分:1)
首先,AdhIntent
必须是public
类。否则,Android无法创建它的实例。
其次,AdhIntent
需要在<receiver>
元素的清单中注册。否则,Android无法通过您的PendingIntent
发送广播。
您也不需要getApplicationContext()
- 只有在您完全准确地知道
最后,使用AlarmManager
来控制每一秒对AlarmManager
的使用并不是特别好。充其量,这对于书籍示例或轻量级测试来说非常好。如果你真的需要每秒控制某个地方,那么有更好的解决方案,假设每秒获得控制权实际上是一个明智的选择。