Android变量未在通知中更新

时间:2012-09-30 18:47:51

标签: android mobile

我正在使用一些闹钟功能每五秒钟发出一次通知。在函数中,每次调用时都应该更改变量。但没有任何事情发生,它只是继续显示通知中的第一组数据。 这来自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变量没有更新。它只在第一次调用时更新。 感谢。

3 个答案:

答案 0 :(得分:1)

使x2变量静态似乎解决了这个问题。

答案 1 :(得分:0)

可能是远射但是......我怀疑x2可能被多个线程访问?在这种情况下,它应该声明为volatile,以便编译器跳过任何不适合多个线程访问的变量的优化(在这种情况下可能导致错误的行为)。

答案 2 :(得分:0)

你在使用x2做其他事吗?查看BroadcastReciever.的生命周期文档。每次运行TimeAlarm后,onReceive()的实例可能会被杀死;你需要做些什么来在运行之间保持x2的价值。