不确定这里有什么问题。以下代码不起作用。我在使用类似代码之前使用了未决意图,但从未遇到过这个问题。请帮助。
来自Main.java的日志语句正在打印,但没有任何内容从PublicData.class
中记录Main.java
AlarmManager alarm;
long gap = 1800000;
Calendar cal;
Log.d("Stoned", "pending intent about to create");
Intent i = new Intent(this, PublicData.class);
PendingIntent pint = PendingIntent.getService(
this, 0, i, 0);
Log.d("Stoned", "pending intent creating");
alarm = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE);
alarm.setRepeating(AlarmManager.RTC, cal.getTimeInMillis(),
gap, pint);
Log.d("Stoned", "pending intent created");
PublicData.java
public class PublicData extends IntentService {
@Override
protected void onHandleIntent(Intent intent) {
Log.d("Stoned", "In pending intent");
}
.
.
答案 0 :(得分:0)
问题是当第一次调用警报时,第二个参数是偏移量。如果您使用当前时间,这将需要数千小时才能首次呼叫......
alarm.setRepeating(AlarmManager.RTC, cal.getTimeInMillis(), gap, pint);
应该(立即重复)
alarm.setRepeating(AlarmManager.RTC, 0, gap, pint);
编辑:
您也可以使用:
long interval = DateUtils.SECOND_IN_MILLIS * 30;
long firstWake = System.currentTimeMillis() + interval;
am.setRepeating(AlarmManager.RTC_WAKEUP, firstWake, interval, pendingIntent);
答案 1 :(得分:0)
如果其他人遇到同样的问题,以下事情对我有用。我在清单中的服务声明中添加了“android:exported =”true“'。此外,我使用整个packagename而不仅仅是服务的classname。它在进行这些更改后起作用。
<service android:name="com.abc.def.PublicData" android:exported="true" >