我正在使用一些闹钟功能每五秒钟发出一次通知。在函数中,每次调用时都应该更改变量。但没有任何事情发生,它只是继续显示通知中的第一组数据。 这来自MainActivity类:
public void setRepeatingAlarm(){
Intent intent = new Intent(this, TimeAlarm.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0,intent, PendingIntent.FLAG_UPDATE_CURRENT);
am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), (5 * 1000), pendingIntent);
}
这是来自TimeAlarm类:
public void onReceive(Context context, Intent intent) {
nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
CharSequence from = "Homework";
CharSequence message = "test"+ MainActivity.arraytest[x2]+ x2;
x2 +=1;
PendingIntent contentIntent = PendingIntent.getActivity(context, 0,new Intent(context,TimeAlarm.class), 0);
Notification notif = new Notification(R.drawable.ic_launcher,"Update", System.currentTimeMillis());
notif.setLatestEventInfo(context, from, message, contentIntent);
nm.notify(notify_id, notif);
}
问题是x2变量没有更新。它只在第一次调用时更新。 感谢。
答案 0 :(得分:1)
使x2变量静态似乎解决了这个问题。
答案 1 :(得分:0)
可能是远射但是......我怀疑x2
可能被多个线程访问?在这种情况下,它应该声明为volatile
,以便编译器跳过任何不适合多个线程访问的变量的优化(在这种情况下可能导致错误的行为)。
答案 2 :(得分:0)
你在使用x2
做其他事吗?查看BroadcastReciever.的生命周期文档。每次运行TimeAlarm
后,onReceive()
的实例可能会被杀死;你需要做些什么来在运行之间保持x2
的价值。