Android 使用BroadcastReceiver更新活动活动用户界面
我使用以下方法实现了重复报警 但是,一旦报警响起/收到报警,我想在活动活动中更新我的ListView。我只有一个具有ListView的活动Android 使用BroadcastReceiver更新活动活动用户界面,android,android-intent,android-broadcast,Android,Android Intent,Android Broadcast,我使用以下方法实现了重复报警 但是,一旦报警响起/收到报警,我想在活动活动中更新我的ListView。我只有一个具有ListView的活动 收到报警后,如何在主活动类中执行更新UI方法?如何从AlarmReceiver extends BroadcastReceiver类中的onReceive调用此函数?最简单的方法是使AlarmReceiver成为活动的内部类。这样它就可以访问您活动的所有字段和方法。如果你不在其他地方使用它,它也可以是匿名的。 要使其仅在活动时更新您的活动,请在onResum
收到报警后,如何在主活动类中执行更新UI方法?如何从AlarmReceiver extends BroadcastReceiver类中的onReceive调用此函数?最简单的方法是使AlarmReceiver成为活动的内部类。这样它就可以访问您活动的所有字段和方法。如果你不在其他地方使用它,它也可以是匿名的。 要使其仅在活动时更新您的活动,请在onResume中注册您的接收者,并在onPause中注销它。请注意指定BroadcastReceiver将响应的意图操作的IntentFilter 例如:
private BroadcastReceiver updateReceiver;
//...
@Override
protected void onResume() {
super.onResume();
updateReceiver=new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
//your list update code here
}
};
IntentFilter updateIntentFilter=new IntentFilter("update");
registerReceiver(updateReceiver, updateIntentFilter);
}
@Override
protected void onPause() {
super.onPause();
if (this.updateReceiver!=null)
unregisterReceiver(updateReceiver);
}
如果仍希望AlarmReceiver是一个单独的类,请在初始化期间向其传递某种回调:
public interface AlarmReceiverCallback {
public void onAlarmReceived(Intent intent);
}
//in your AlarmReceiver class:
private AlarmReceiverCallback callback;
public AlarmReceiver(AlarmReceiverCallback callback) {
this.callback=callback;
}
@Override
public void onReceive(Context context, Intent intent) {
callback.onAlarmReceived(intent);
}
AlarmReceiver的初始化如下所示:
updateReceiver=new AlarmReceiver(new AlarmReceiverCallback() {
@Override
public void onAlarmReceived(Intent intent) {
//your list update code here
}
});
如果我使用第一种方法,如何设置周期性报警?我已经尝试了“setRecurringAlarm”,从最初的链接修改它,每5秒设置一次警报。它与单独的广播接收器类一起工作。它如何与内部类一起工作?@Santiago在注册BroadcastReceiver时,可以传递IntentFilter实例,指定接收方将响应更新的操作(在我的示例中)。因此,现在,当您为警报准备Intent时,请将其操作设置为与IntentFilter指定的相同,即更新,这样就可以了。谢谢!我不知道设置动作的方法。它现在工作了。@deville我一直在我的手机上测试它,不幸的是,在睡眠期间没有收到警报。例如,如果我每天设置警报,并且设备处于唤醒状态,我可以看到警报已收到,并且我的列表已更新。但如果我在手机上测试并在大约一小时后检查应用程序,列表不会更新,警报也不会收到。@3amoura如果看不到代码,很难判断,但一般情况下,广播接收器不会这样使用。